Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
10/18/11 15:08:14 (13 years ago)
Author:
ascheibe
Message:

on behalf of spimming:
#1659

  • implemented abstract base class for benchmarking algorithms
  • added License information
  • corrected plugin dependencies
  • corrected descriptions
File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/Benchmarking/sources/HeuristicLab.Algorithms.Benchmarks/3.3/Dhrystone.cs

    r6920 r6934  
    1 using System;
     1#region License Information
     2/* HeuristicLab
     3 * Copyright (C) 2002-2011 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
     4 *
     5 * This file is part of HeuristicLab.
     6 *
     7 * HeuristicLab is free software: you can redistribute it and/or modify
     8 * it under the terms of the GNU General Public License as published by
     9 * the Free Software Foundation, either version 3 of the License, or
     10 * (at your option) any later version.
     11 *
     12 * HeuristicLab is distributed in the hope that it will be useful,
     13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
     14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     15 * GNU General Public License for more details.
     16 *
     17 * You should have received a copy of the GNU General Public License
     18 * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
     19 */
     20#endregion
     21
     22using System;
    223using System.Diagnostics;
    3 using System.Threading;
    4 using System.Threading.Tasks;
    524using HeuristicLab.Common;
    625using HeuristicLab.Core;
     
    1029
    1130namespace HeuristicLab.Algorithms.Benchmarks {
    12   [Item("Dhrystone Algorithm", "A Dhrystone benchmark algorithm.")]
     31  [Item("Dhrystone Algorithm", "Dhrystone benchmarking algorithm.")]
    1332  [Creatable("Benchmarks")]
    1433  [StorableClass]
    15   public class Dhrystone : Algorithm {
    16     private DateTime lastUpdateTime;
    17 
    18     [Storable]
    19     private ResultCollection results;
     34  public class Dhrystone : Benchmark {
    2035
    2136    #region Benchmark Fields
     
    4661    #endregion
    4762
    48     #region Properties
    49 
    50     public override ResultCollection Results {
    51       get { return results; }
    52     }
    53 
    54     #endregion
    55 
    5663    #region Costructors
    5764
    5865    public Dhrystone()
    5966      : base() {
    60       results = new ResultCollection();
     67
    6168    }
    6269
    6370    private Dhrystone(Dhrystone original, Cloner cloner)
    6471      : base(original, cloner) {
    65       results = new ResultCollection();
    66     }
    67 
    68     #endregion
     72
     73    }
     74
     75    #endregion
     76
     77    #region IDeepClonable Members
    6978
    7079    public override IDeepCloneable Clone(Cloner cloner) {
     
    7281    }
    7382
    74     public override void Prepare() {
    75       results.Clear();
    76       OnPrepared();
    77     }
    78 
    79     public override void Start() {
    80       var cancellationTokenSource = new CancellationTokenSource();
    81       OnStarted();
    82       Task task = Task.Factory.StartNew(Run, cancellationTokenSource.Token, cancellationTokenSource.Token);
    83       task.ContinueWith(t => {
    84         try {
    85           t.Wait();
    86         }
    87         catch (AggregateException ex) {
    88           try {
    89             ex.Flatten().Handle(x => x is OperationCanceledException);
    90           }
    91           catch (AggregateException remaining) {
    92             if (remaining.InnerExceptions.Count == 1) OnExceptionOccurred(remaining.InnerExceptions[0]);
    93             else OnExceptionOccurred(remaining);
    94           }
    95         }
    96         cancellationTokenSource.Dispose();
    97         cancellationTokenSource = null;
    98         OnStopped();
    99       });
    100     }
    101 
    102     private void Run(object state) {
    103       CancellationToken cancellationToken = (CancellationToken)state;
    104       lastUpdateTime = DateTime.Now;
    105       System.Timers.Timer timer = new System.Timers.Timer(250);
    106       timer.AutoReset = true;
    107       timer.Elapsed += new System.Timers.ElapsedEventHandler(timer_Elapsed);
    108       timer.Start();
    109       try {
    110         RunBenchmark();
    111       }
    112       finally {
    113         timer.Elapsed -= new System.Timers.ElapsedEventHandler(timer_Elapsed);
    114         timer.Stop();
    115         ExecutionTime += DateTime.Now - lastUpdateTime;
    116       }
    117 
    118       cancellationToken.ThrowIfCancellationRequested();
    119     }
    120 
    121     private void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e) {
    122       System.Timers.Timer timer = (System.Timers.Timer)sender;
    123       timer.Enabled = false;
    124       DateTime now = DateTime.Now;
    125       ExecutionTime += now - lastUpdateTime;
    126       lastUpdateTime = now;
    127       timer.Enabled = true;
    128     }
    129 
    130     #region Dhrystone Benchmark
    131 
    132     private void RunBenchmark() {
     83    #endregion
     84
     85    #region Benchmark Methods
     86
     87    protected override void RunBenchmark() {
    13388      int Int_Loc_1;
    13489      int Int_Loc_2;
     
    162117      }
    163118
    164       //System.Console.WriteLine("Execution start, " + Number_Of_Runs + " runs through Dhrystone");
    165119      Stopwatch sw = new Stopwatch();
    166120      sw.Start();
     
    205159      sw.Stop();
    206160      total_time = sw.ElapsedMilliseconds;
    207       //System.Console.WriteLine("total time: {0} ms", total_time);
    208       //System.Console.WriteLine("Result: " + Number_Of_Runs * 1000 / total_time + " dhrystone/ms.");
    209161
    210162      Results.Add(new Result("DIPS", new DoubleValue(Number_Of_Runs * 1000 / total_time)));
     
    389341      public int Int_Comp;
    390342      public string String_Comp;
    391       /*
    392       public int Enum_Comp_2;
    393       public string String_Comp_2;
    394       public char Char_Comp_1;
    395       public char Char_Comp_2;
    396        */
    397343    }
    398344
Note: See TracChangeset for help on using the changeset viewer.