Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3829)

Unified Diff: base/time/time_win_unittest.cc

Issue 429743002: Make QPCValueToMicroseconds faster in case the value is less than 44 bits (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Typo Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« base/time/time.h ('K') | « base/time/time_win.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: base/time/time_win_unittest.cc
diff --git a/base/time/time_win_unittest.cc b/base/time/time_win_unittest.cc
index 46e256ead0cd6c84c571230ad8e7f0b8820b2cc3..c7ce00ef4ee7875e63e84b6b585f3fa22e1ba7bc 100644
--- a/base/time/time_win_unittest.cc
+++ b/base/time/time_win_unittest.cc
@@ -241,3 +241,30 @@ TEST(TimeTicks, DISABLED_Drift) {
printf("average time drift in microseconds: %lld\n",
total_drift / kIterations);
}
+
+int64 QPCValueToMicrosecondsSafely(LONGLONG qpc_value,
+ int64 ticks_per_second) {
+ int64 whole_seconds = qpc_value / ticks_per_second;
+ int64 leftover_ticks = qpc_value % ticks_per_second;
+ int64 microseconds = (whole_seconds * Time::kMicrosecondsPerSecond) +
+ ((leftover_ticks * Time::kMicrosecondsPerSecond) /
+ ticks_per_second);
+ return microseconds;
+}
+
+TEST(TimeTicks, FromQPCValue) {
+ if (!TimeTicks::IsHighResClockWorking())
+ return;
+ LARGE_INTEGER frequency;
+ QueryPerformanceFrequency(&frequency);
+ int64 ticks_per_second = frequency.QuadPart;
+ LONGLONG qpc_value = Time::kQPCOverflowThreshold;
+ TimeTicks expected_value = TimeTicks::FromInternalValue(
+ QPCValueToMicrosecondsSafely(qpc_value + 1, ticks_per_second));
jar (doing other things) 2014/08/01 04:55:32 nit: please add one more test, for *exactly* qpc_v
fmeawad 2014/08/05 22:20:09 Done.
+ EXPECT_EQ(expected_value,
+ TimeTicks::FromQPCValue(qpc_value + 1));
+ expected_value = TimeTicks::FromInternalValue(
+ QPCValueToMicrosecondsSafely(qpc_value - 1, ticks_per_second));
+ EXPECT_EQ(expected_value,
+ TimeTicks::FromQPCValue(qpc_value - 1));
+}
« base/time/time.h ('K') | « base/time/time_win.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698