aboutsummaryrefslogtreecommitdiff
path: root/toolsrc/include
diff options
context:
space:
mode:
authorAlexander Karatarakis <alkarata@microsoft.com>2016-10-10 18:12:26 -0700
committerAlexander Karatarakis <alkarata@microsoft.com>2016-10-10 18:12:26 -0700
commit3ecc67784aa9ee44953c743362023015e9a09a56 (patch)
treeb1c97e892d97d6202d7105e13ce625a357184dab /toolsrc/include
parenta00500bcc15058e3379b7a74c2f0248ddfe74e0d (diff)
downloadvcpkg-3ecc67784aa9ee44953c743362023015e9a09a56.tar.gz
vcpkg-3ecc67784aa9ee44953c743362023015e9a09a56.zip
Add Stopwatch class
Diffstat (limited to 'toolsrc/include')
-rw-r--r--toolsrc/include/Stopwatch.h40
1 files changed, 40 insertions, 0 deletions
diff --git a/toolsrc/include/Stopwatch.h b/toolsrc/include/Stopwatch.h
new file mode 100644
index 000000000..2bd5c31bf
--- /dev/null
+++ b/toolsrc/include/Stopwatch.h
@@ -0,0 +1,40 @@
+#pragma once
+
+#include <chrono>
+#include <string>
+
+namespace vcpkg
+{
+ class Stopwatch
+ {
+ public:
+ static Stopwatch createUnstarted();
+
+ static Stopwatch createStarted();
+
+ bool isRunning() const;
+
+ Stopwatch& start();
+
+ Stopwatch& stop();
+
+ Stopwatch& reset();
+
+ template <class TimeUnit>
+ TimeUnit elapsed() const
+ {
+ return std::chrono::duration_cast<TimeUnit>(elapsedNanos());
+ }
+
+ std::string toString() const;
+
+ private:
+ Stopwatch();
+
+ std::chrono::nanoseconds elapsedNanos() const;
+
+ bool m_isRunning;
+ std::chrono::nanoseconds m_elapsedNanos;
+ std::chrono::steady_clock::time_point m_startTick;
+ };
+}