using System; using System.Threading; using System.Runtime.InteropServices; using System.ComponentModel; namespace NeuralNetworkLibrary { 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 use 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 article, along with any associated source code and files, is licensed under The MIT License
Math Primers for Programmers