summaryrefslogtreecommitdiff
path: root/src/utils/elapsed_logger.h
diff options
context:
space:
mode:
authorNikita Kostovsky <nikita@kostovsky.me>2025-11-22 20:36:27 +0100
committerNikita Kostovsky <nikita@kostovsky.me>2025-11-22 20:36:27 +0100
commit9157b253251f357b76fdfd657300d43e702f1674 (patch)
tree39b5c6324646479fadb196d276840c9e3b70fa3e /src/utils/elapsed_logger.h
parent6aecc111a48ccc316a923e92b4b41424847be297 (diff)
introduce elapsed_logger and more garbage
Diffstat (limited to 'src/utils/elapsed_logger.h')
-rw-r--r--src/utils/elapsed_logger.h32
1 files changed, 32 insertions, 0 deletions
diff --git a/src/utils/elapsed_logger.h b/src/utils/elapsed_logger.h
new file mode 100644
index 0000000..ea0d9e2
--- /dev/null
+++ b/src/utils/elapsed_logger.h
@@ -0,0 +1,32 @@
+#pragma once
+
+#include <chrono>
+#include <iomanip>
+#include <iostream>
+#include <string>
+
+/*!
+ * \brief The elapsed_logger class - print `message: <own life time>` on destruction
+ */
+template<typename T = std::chrono::microseconds, int W = 8>
+class elapsed_logger
+{
+ using clk = std::chrono::high_resolution_clock;
+
+public:
+ explicit elapsed_logger(const std::string &&message)
+ : m_start{clk::now()}
+ , m_message{std::move(message)}
+ {}
+
+ ~elapsed_logger()
+ {
+ using namespace std::chrono;
+ const auto duration = duration_cast<T>(clk::now() - m_start);
+ std::cout << m_message << ": " << std::setw(W) << duration << std::endl;
+ }
+
+private:
+ const std::chrono::time_point<clk> m_start;
+ const std::string m_message;
+};