diff options
| author | Alexander Karatarakis <alkarata@microsoft.com> | 2016-10-10 18:12:26 -0700 |
|---|---|---|
| committer | Alexander Karatarakis <alkarata@microsoft.com> | 2016-10-10 18:12:26 -0700 |
| commit | 3ecc67784aa9ee44953c743362023015e9a09a56 (patch) | |
| tree | b1c97e892d97d6202d7105e13ce625a357184dab /toolsrc/include | |
| parent | a00500bcc15058e3379b7a74c2f0248ddfe74e0d (diff) | |
| download | vcpkg-3ecc67784aa9ee44953c743362023015e9a09a56.tar.gz vcpkg-3ecc67784aa9ee44953c743362023015e9a09a56.zip | |
Add Stopwatch class
Diffstat (limited to 'toolsrc/include')
| -rw-r--r-- | toolsrc/include/Stopwatch.h | 40 |
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; + }; +} |
