/* Thor Server Project Copyright 2008 Joe Hegarty This file is part of The Thor Server Project. The Thor Server Project is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. The Thor Server Project is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with The Thor Server Project. If not, see . */ using System; using System.Collections.Generic; using System.Text; namespace ThorServer.Utilities { public static class HighResolutionTime { [System.Runtime.InteropServices.DllImport("Kernel32.dll")] private static extern bool QueryPerformanceCounter(out long perfcount); [System.Runtime.InteropServices.DllImport("Kernel32.dll")] private static extern bool QueryPerformanceFrequency(out long freq); private static long mStartCounter; private static long mFrequency; static HighResolutionTime() { QueryPerformanceFrequency(out mFrequency); } public static void Start() { QueryPerformanceCounter(out mStartCounter); } public static double GetTime() { long endCounter; QueryPerformanceCounter(out endCounter); long elapsed = endCounter - mStartCounter; return (double) elapsed / mFrequency; } } }