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/Algorithms/HeuristicOptimizationAlgorithm.cs

    r14185 r15603  
    2121
    2222using System;
     23using System.Threading;
    2324using HeuristicLab.Common;
    2425using HeuristicLab.Core;
     
    3738    }
    3839
    39     protected HeuristicOptimizationAlgorithm() : base() { }
    40     protected HeuristicOptimizationAlgorithm(string name) : base(name) { }
    41     protected HeuristicOptimizationAlgorithm(string name, ParameterCollection parameters) : base(name, parameters) { }
    42     protected HeuristicOptimizationAlgorithm(string name, string description) : base(name, description) { }
    43     protected HeuristicOptimizationAlgorithm(string name, string description, ParameterCollection parameters) : base(name, description, parameters) { }
     40    [Storable]
     41    private TimeSpan executionTime;
     42    private DateTime startDate;
     43    public override TimeSpan ExecutionTime {
     44      get { return executionTime + (ExecutionState == ExecutionState.Started ? DateTime.UtcNow - startDate : TimeSpan.Zero); }
     45    }
     46
     47    protected HeuristicOptimizationAlgorithm() : base() {
     48      executionTime = TimeSpan.Zero;
     49    }
     50    protected HeuristicOptimizationAlgorithm(string name) : base(name) {
     51      executionTime = TimeSpan.Zero;
     52    }
     53    protected HeuristicOptimizationAlgorithm(string name, ParameterCollection parameters) : base(name, parameters) {
     54      executionTime = TimeSpan.Zero;
     55    }
     56    protected HeuristicOptimizationAlgorithm(string name, string description) : base(name, description) {
     57      executionTime = TimeSpan.Zero;
     58    }
     59    protected HeuristicOptimizationAlgorithm(string name, string description, ParameterCollection parameters) : base(name, description, parameters) {
     60      executionTime = TimeSpan.Zero;
     61    }
    4462
    4563    [StorableConstructor]
    4664    protected HeuristicOptimizationAlgorithm(bool deserializing) : base(deserializing) { }
    47     protected HeuristicOptimizationAlgorithm(HeuristicOptimizationAlgorithm original, Cloner cloner) : base(original, cloner) { }
     65    protected HeuristicOptimizationAlgorithm(HeuristicOptimizationAlgorithm original, Cloner cloner)
     66      : base(original, cloner) {
     67      executionTime = original.executionTime;
     68    }
     69
     70    public override void Prepare() {
     71      executionTime = TimeSpan.Zero;
     72      base.Prepare();
     73    }
     74
     75    public override void Start(CancellationToken cancellationToken) {
     76      startDate = DateTime.UtcNow;
     77      base.Start(cancellationToken);
     78    }
    4879
    4980    #region Events
     
    6293    protected virtual void Problem_EvaluatorChanged(object sender, EventArgs e) { }
    6394    #endregion
     95
     96    protected override void OnPaused() {
     97      var elapsed = DateTime.UtcNow - startDate;
     98      executionTime += elapsed;
     99      base.OnPaused();
     100    }
     101
     102    protected override void OnStopped() {
     103      if (ExecutionState == ExecutionState.Started) {
     104        var elapsed = DateTime.UtcNow - startDate;
     105        executionTime += elapsed;
     106      }
     107      base.OnStopped();
     108    }
    64109  }
    65110}
Note: See TracChangeset for help on using the changeset viewer.