// // // // // $Revision: 2210 $ // using System; using System.Runtime.InteropServices; namespace Debugger.Util { /// /// HighPrecisionTimer can obtain much more accurate time measurement /// for performace optimization /// public static class HighPrecisionTimer { [DllImport("kernel32.dll")] static extern int QueryPerformanceFrequency(out long frequency); [DllImport("kernel32.dll")] static extern int QueryPerformanceCounter(out long count); static DateTime startTime; static long startTicks; static HighPrecisionTimer() { startTime = DateTime.Now; startTicks = Ticks; } static long Ticks { get { long frequency; long count; QueryPerformanceFrequency(out frequency); QueryPerformanceCounter(out count); return (count / frequency) * TimeSpan.TicksPerSecond + (count % frequency) * TimeSpan.TicksPerSecond / frequency; } } public static DateTime Now { get { return startTime.AddTicks(Ticks - startTicks); } } } }