|
using System;
using System.Threading;
using System.Runtime.InteropServices;
using System.ComponentModel;
namespace ANN.Perceptron.Common
{
public class HiPerfTimer
{
[DllImport("Kernel32.dll")]
private static extern bool QueryPerformanceCounter(
out long lpPerformanceCount);
[DllImport("Kernel32.dll")]
private static extern bool QueryPerformanceFrequency(
out long lpFrequency);
private long startTime, stopTime;
private long freq;
private bool _bStarted;
public bool m_bStarted
{
get { return _bStarted; }
}
private bool _bStoped;
public bool m_bStoped
{
get { return _bStoped; }
}
// Constructor
public HiPerfTimer()
{
startTime = 0;
stopTime = 0;
_bStarted = false;
_bStoped = true;
if (QueryPerformanceFrequency(out freq) == false)
{
// high-performance counter not supported
throw new Win32Exception();
}
}
// Start the timer
public void Start()
{
// lets do the waiting threads there work
Thread.Sleep(0);
QueryPerformanceCounter(out startTime);
_bStarted = true;
_bStoped = false;
}
// Stop the timer
public void Stop()
{
QueryPerformanceCounter(out stopTime);
_bStarted = false;
_bStoped = true;
}
// Returns the duration of the timer (in seconds)
public double Duration
{
get
{
return (double)(stopTime - startTime) / (double)freq;
}
}
}
}
|
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.
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.