diff options
| author | 杨宇千 <crupest@outlook.com> | 2018-11-07 21:17:30 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-11-07 21:17:30 +0800 |
| commit | 634dab6ad2c9e4675beacfb77ac02b2d43cab132 (patch) | |
| tree | b44d8cd6f8f4ffbbb6451d42ba9a6b4d98828aec /src/cru_debug.h | |
| parent | df0d6e1e282c75d4d8154011715f0b74547b35db (diff) | |
| parent | 6f76a0ad3df99ea0d99623347d019536cc07e920 (diff) | |
| download | cru-634dab6ad2c9e4675beacfb77ac02b2d43cab132.tar.gz cru-634dab6ad2c9e4675beacfb77ac02b2d43cab132.tar.bz2 cru-634dab6ad2c9e4675beacfb77ac02b2d43cab132.zip | |
Merge pull request #1 from crupest/minmax-layout
Min max layout support.
Diffstat (limited to 'src/cru_debug.h')
| -rw-r--r-- | src/cru_debug.h | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/src/cru_debug.h b/src/cru_debug.h new file mode 100644 index 00000000..c750e11f --- /dev/null +++ b/src/cru_debug.h @@ -0,0 +1,44 @@ +#pragma once + +#include <functional> + +#include "base.h" +#include "format.h" + +namespace cru::debug +{ + void DebugMessage(const StringView& message); + +#ifdef CRU_DEBUG + inline void DebugTime(const std::function<void()>& 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<std::chrono::milliseconds>(after - before); + DebugMessage(Format(L"{}: {}ms.\n", hint_message, duration.count())); + } + + template<typename TReturn> + TReturn DebugTime(const std::function<TReturn()>& 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<std::chrono::milliseconds>(after - before); + DebugMessage(Format(L"{}: {}ms.\n", hint_message, duration.count())); + return std::move(result); + } +#else + inline void DebugTime(const std::function<void()>& action, const StringView& hint_message) + { + action(); + } + + template<typename TReturn> + TReturn DebugTime(const std::function<TReturn()>& action, const StringView& hint_message) + { + return action(); + } +#endif +} |
