From efdce672123284847bd7fb6f12ac1ec96f28f3ef Mon Sep 17 00:00:00 2001 From: crupest Date: Wed, 7 Nov 2018 21:40:04 +0800 Subject: Make all header *.hpp . --- src/cru_debug.hpp | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 src/cru_debug.hpp (limited to 'src/cru_debug.hpp') diff --git a/src/cru_debug.hpp b/src/cru_debug.hpp new file mode 100644 index 00000000..ed6fcaf6 --- /dev/null +++ b/src/cru_debug.hpp @@ -0,0 +1,44 @@ +#pragma once + +#include + +#include "base.hpp" +#include "format.hpp" + +namespace cru::debug +{ + void DebugMessage(const StringView& message); + +#ifdef CRU_DEBUG + inline void DebugTime(const std::function& action, const StringView& hint_message) + { + const auto before = std::chrono::steady_clock::now(); + action(); + const auto after = std::chrono::steady_clock::now(); + const auto duration = std::chrono::duration_cast(after - before); + DebugMessage(Format(L"{}: {}ms.\n", hint_message, duration.count())); + } + + template + TReturn DebugTime(const std::function& action, const StringView& hint_message) + { + const auto before = std::chrono::steady_clock::now(); + auto&& result = action(); + const auto after = std::chrono::steady_clock::now(); + const auto duration = std::chrono::duration_cast(after - before); + DebugMessage(Format(L"{}: {}ms.\n", hint_message, duration.count())); + return std::move(result); + } +#else + inline void DebugTime(const std::function& action, const StringView& hint_message) + { + action(); + } + + template + TReturn DebugTime(const std::function& action, const StringView& hint_message) + { + return action(); + } +#endif +} -- cgit v1.2.3