// // Copyright (c) 2014 The ANGLE Project Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // // WindowsTimer.cpp: Implementation of a high precision timer class on Windows #include "windows/WindowsTimer.h" WindowsTimer::WindowsTimer() : mRunning(false), mStartTime(0), mStopTime(0) { } void WindowsTimer::start() { LARGE_INTEGER frequency; QueryPerformanceFrequency(&frequency); mFrequency = frequency.QuadPart; LARGE_INTEGER curTime; QueryPerformanceCounter(&curTime); mStartTime = curTime.QuadPart; mRunning = true; } void WindowsTimer::stop() { LARGE_INTEGER curTime; QueryPerformanceCounter(&curTime); mStopTime = curTime.QuadPart; mRunning = false; } double WindowsTimer::getElapsedTime() const { LONGLONG endTime; if (mRunning) { LARGE_INTEGER curTime; QueryPerformanceCounter(&curTime); endTime = curTime.QuadPart; } else { endTime = mStopTime; } return static_cast(endTime - mStartTime) / mFrequency; } Timer *CreateTimer() { return new WindowsTimer(); }