Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
01/12/18 13:33:23 (6 years ago)
Author:
abeham
Message:

#1614: Implemented changed behavior to measure execution time (cf. #2869)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/GeneralizedQAP/HeuristicLab.Optimization/3.3/MetaOptimizers/Experiment.cs

    r15339 r15603  
    7070    private TimeSpan executionTime;
    7171    public TimeSpan ExecutionTime {
    72       get { return executionTime; }
    73       private set {
    74         executionTime = value;
    75         OnExecutionTimeChanged();
    76       }
     72      get { return executionTime + Optimizers.Aggregate(TimeSpan.Zero, (a, x) => a + x.ExecutionTime); }
    7773    }
    7874
     
    249245      if (handler != null) handler(this, EventArgs.Empty);
    250246    }
     247    [Obsolete("deprecated needs to be removed")]
    251248    public event EventHandler ExecutionTimeChanged;
    252     private void OnExecutionTimeChanged() {
    253       EventHandler handler = ExecutionTimeChanged;
    254       if (handler != null) handler(this, EventArgs.Empty);
    255     }
    256249    public event EventHandler Prepared;
    257250    private void OnPrepared() {
     
    334327    private void RegisterOptimizerEvents(IOptimizer optimizer) {
    335328      optimizer.ExceptionOccurred += new EventHandler<EventArgs<Exception>>(optimizer_ExceptionOccurred);
    336       optimizer.ExecutionTimeChanged += new EventHandler(optimizer_ExecutionTimeChanged);
    337329      optimizer.Paused += new EventHandler(optimizer_Paused);
    338330      optimizer.Prepared += new EventHandler(optimizer_Prepared);
     
    345337    private void DeregisterOptimizerEvents(IOptimizer optimizer) {
    346338      optimizer.ExceptionOccurred -= new EventHandler<EventArgs<Exception>>(optimizer_ExceptionOccurred);
    347       optimizer.ExecutionTimeChanged -= new EventHandler(optimizer_ExecutionTimeChanged);
    348339      optimizer.Paused -= new EventHandler(optimizer_Paused);
    349340      optimizer.Prepared -= new EventHandler(optimizer_Prepared);
     
    360351      lock (locker)
    361352        OnExceptionOccurred(e.Value);
    362     }
    363     private void optimizer_ExecutionTimeChanged(object sender, EventArgs e) {
    364       // only wait for maximally 100ms to acquire lock, otherwise return and don't update the execution time
    365       var success = Monitor.TryEnter(locker, 100);
    366       if (!success) return;
    367       try {
    368         ExecutionTime = Optimizers.Aggregate(TimeSpan.Zero, (t, o) => t + o.ExecutionTime);
    369       } finally {
    370         Monitor.Exit(locker);
    371       }
    372353    }
    373354    private void optimizer_Paused(object sender, EventArgs e) {
Note: See TracChangeset for help on using the changeset viewer.