diff -r 3145aadca3d2 -r 0c551e8818e0 External/Aga.Controls/TimeCounter.cs --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/External/Aga.Controls/TimeCounter.cs Sun May 27 15:16:19 2012 +0000 @@ -0,0 +1,59 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Runtime.InteropServices; +using System.Diagnostics.CodeAnalysis; + +namespace Aga.Controls +{ + /// + /// High resolution timer, used to test performance + /// + public static class TimeCounter + { + private static Int64 _start; + + /// + /// Start time counting + /// + public static void Start() + { + _start = 0; + QueryPerformanceCounter(ref _start); + } + + public static Int64 GetStartValue() + { + Int64 t = 0; + QueryPerformanceCounter(ref t); + return t; + } + + /// + /// Finish time counting + /// + /// time in seconds elapsed from Start till Finish + public static double Finish() + { + return Finish(_start); + } + + public static double Finish(Int64 start) + { + Int64 finish = 0; + QueryPerformanceCounter(ref finish); + + Int64 freq = 0; + QueryPerformanceFrequency(ref freq); + return (finish - start) / (double)freq; + } + + [DllImport("Kernel32.dll")] + [return: MarshalAs(UnmanagedType.Bool)] + static extern bool QueryPerformanceCounter(ref Int64 performanceCount); + + [DllImport("Kernel32.dll")] + [return: MarshalAs(UnmanagedType.Bool)] + static extern bool QueryPerformanceFrequency(ref Int64 frequency); + } +}