|
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics;
using System.Windows.Threading;
namespace TLS
{
//=============================================================================================
class Controller
{
public TestInfo TestInfo { get; private set; }
public TestBase TestBase { get; private set; }
Stopwatch _Stopwatch = new Stopwatch();
TimeSpan _Start = TimeSpan.Zero;
TimeSpan _Finish = TimeSpan.Zero;
public Controller( TestInfo test )
{
TestInfo = test;
TestBase = TestInfo.Create();
TestBase.Finished += new EventHandler( TestBase_Finished );
}
public int Percent
{
get
{
return ( int ) ( 100 * TestBase.Done / TestBase.TotalWork );
}
}
public void Run()
{
_Stopwatch.Reset();
_Stopwatch.Start();
_Start = _Stopwatch.Elapsed;
TestBase.Run();
}
void TestBase_Finished( object sender, EventArgs e )
{
_Finish = _Stopwatch.Elapsed;
TestInfo.Dispatcher.Invoke( DispatcherPriority.Normal, ( Action ) delegate { TestInfo.IterationsPerSecond = IterationsPerSecond; } );
TestInfo.Dispatcher.Invoke( DispatcherPriority.Normal, ( Action ) delegate { TestInfo.IterationsPerSecondPerCore = IterationsPerSecondPerCore; } );
RaiseFinished();
}
public event EventHandler Finished;
public void RaiseFinished()
{
var d = Finished;
if ( d != null ) d( null, EventArgs.Empty );
}
int IterationsPerSecond
{
get
{
return ( int ) ( TestBase.Done / ( _Finish - _Start ).TotalSeconds );
}
}
int IterationsPerSecondPerCore
{
get
{
if ( !TestBase.Multithreaded ) return IterationsPerSecond;
return IterationsPerSecond / Environment.ProcessorCount;
}
}
}
//=============================================================================================
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
I discovered C# and .NET 1.0 Beta 1 in late 2000 and loved them immediately.
I have been writing software professionally in C# ever since
In real life, I have spent 3 years travelling abroad,
I have held a UK Private Pilots Licence for 20 years,
and I am a PADI Divemaster.
I now live near idyllic Bournemouth in England.
I can work 'virtually' anywhere!