From ee7577370df33925cbae02c012584e071a9f4cbb Mon Sep 17 00:00:00 2001 From: Neil Date: Mon, 26 Jan 2015 13:07:51 +1100 Subject: Use QElapsedTimer::nsecsElapsed for more accurate measurement of durations. --- qt/ScintillaEditBase/PlatQt.cpp | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) (limited to 'qt/ScintillaEditBase/PlatQt.cpp') diff --git a/qt/ScintillaEditBase/PlatQt.cpp b/qt/ScintillaEditBase/PlatQt.cpp index 009c54a5a..275cb6e79 100644 --- a/qt/ScintillaEditBase/PlatQt.cpp +++ b/qt/ScintillaEditBase/PlatQt.cpp @@ -33,6 +33,7 @@ #include #include #include +#include #include #ifdef SCI_NAMESPACE @@ -1304,21 +1305,28 @@ int Platform::DBCSCharMaxLength() //---------------------------------------------------------------------- -static QTime timer; +static QElapsedTimer timer; ElapsedTime::ElapsedTime() : bigBit(0), littleBit(0) { - timer.start(); + if (!timer.isValid()) { + timer.start(); + } + qint64 ns64Now = timer.nsecsElapsed(); + bigBit = static_cast(ns64Now >> 32); + littleBit = static_cast(ns64Now & 0xFFFFFFFF); } double ElapsedTime::Duration(bool reset) { - double result = timer.elapsed(); + qint64 ns64Now = timer.nsecsElapsed(); + qint64 ns64Start = (static_cast(static_cast(bigBit)) << 32) + static_cast(littleBit); + double result = ns64Now - ns64Start; if (reset) { - timer.restart(); + bigBit = static_cast(ns64Now >> 32); + littleBit = static_cast(ns64Now & 0xFFFFFFFF); } - result /= 1000.0; - return result; + return result / 1000000000.0; // 1 billion nanoseconds in a second } #ifdef SCI_NAMESPACE -- cgit v1.2.3