| Index: chrome/browser/sync/util/highres_timer-win32.h
|
| ===================================================================
|
| --- chrome/browser/sync/util/highres_timer-win32.h (revision 0)
|
| +++ chrome/browser/sync/util/highres_timer-win32.h (revision 0)
|
| @@ -0,0 +1,78 @@
|
| +// Copyright (c) 2009 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +//
|
| +// High resolution timer functions for use in Windows.
|
| +
|
| +#ifndef CHROME_BROWSER_SYNC_UTIL_HIGHRES_TIMER_WIN32_H_
|
| +#define CHROME_BROWSER_SYNC_UTIL_HIGHRES_TIMER_WIN32_H_
|
| +
|
| +#include <windows.h>
|
| +
|
| +// A handy class for reliably measuring wall-clock time with decent resolution,
|
| +// even on multi-processor machines and on laptops (where RDTSC potentially
|
| +// returns different results on different processors and/or the RDTSC timer
|
| +// clocks at different rates depending on the power state of the CPU,
|
| +// respectively).
|
| +class HighresTimer {
|
| + public:
|
| + // Captures the current start time.
|
| + HighresTimer();
|
| +
|
| + // Captures the current tick, can be used to reset a timer for reuse.
|
| + void Start();
|
| +
|
| + // Returns the elapsed ticks with full resolution.
|
| + ULONGLONG GetElapsedTicks() const;
|
| +
|
| + // Returns the elapsed time in milliseconds, rounded to the nearest
|
| + // millisecond.
|
| + ULONGLONG GetElapsedMs() const;
|
| +
|
| + // Returns the elapsed time in seconds, rounded to the nearest second.
|
| + ULONGLONG GetElapsedSec() const;
|
| +
|
| + ULONGLONG start_ticks() const { return start_ticks_; }
|
| +
|
| + // Returns timer frequency from cache, should be less
|
| + // overhead than ::QueryPerformanceFrequency.
|
| + static ULONGLONG GetTimerFrequency();
|
| + // Returns current ticks.
|
| + static ULONGLONG GetCurrentTicks();
|
| +
|
| + private:
|
| + static void CollectPerfFreq();
|
| +
|
| + // Captured start time.
|
| + ULONGLONG start_ticks_;
|
| +
|
| + // Captured performance counter frequency.
|
| + static bool perf_freq_collected_;
|
| + static ULONGLONG perf_freq_;
|
| +};
|
| +
|
| +inline HighresTimer::HighresTimer() {
|
| + Start();
|
| +}
|
| +
|
| +inline void HighresTimer::Start() {
|
| + start_ticks_ = GetCurrentTicks();
|
| +}
|
| +
|
| +inline ULONGLONG HighresTimer::GetTimerFrequency() {
|
| + if (!perf_freq_collected_)
|
| + CollectPerfFreq();
|
| + return perf_freq_;
|
| +}
|
| +
|
| +inline ULONGLONG HighresTimer::GetCurrentTicks() {
|
| + LARGE_INTEGER ticks;
|
| + ::QueryPerformanceCounter(&ticks);
|
| + return ticks.QuadPart;
|
| +}
|
| +
|
| +inline ULONGLONG HighresTimer::GetElapsedTicks() const {
|
| + return start_ticks_ - GetCurrentTicks();
|
| +}
|
| +
|
| +#endif // CHROME_BROWSER_SYNC_UTIL_HIGHRES_TIMER_WIN32_H_
|
|
|
| Property changes on: chrome\browser\sync\util\highres_timer-win32.h
|
| ___________________________________________________________________
|
| Added: svn:eol-style
|
| + LF
|
|
|
|
|