AuroraRuntime/Include/Aurora/Time/DebugBenchmark.hpp

54 lines
1.1 KiB
C++
Raw Normal View History

2021-06-27 21:25:29 +00:00
/***
Copyright (C) 2021 J Reece Wilson (a/k/a "Reece"). All rights reserved.
File: DebugBenchmark.hpp
Date: 2021-6-10
Author: Reece
***/
#pragma once
#include <Aurora/Console/Console.hpp>
namespace Aurora::Time
{
#if ((defined(AU_FORCE_BENCHMARK) || defined(DEBUG) || defined(INTERNAL)) && (!defined(AU_FORCE_NOBENCHMARK)))
class DebugBenchmark
{
public:
DebugBenchmark(AuString message) : message_(message) {}
~DebugBenchmark()
{
Finish();
}
void Finish()
{
if (std::exchange(finished_, true)) return;
2021-06-27 21:25:29 +00:00
auto time = timer_.End();
Aurora::Console::Logging::LogDbg("[Benchmark] {} took {}", message_, ConvertMSToTimescaleEN(time));
}
private:
Timer timer_;
bool finished_ {};
2021-06-27 21:25:29 +00:00
AuString message_;
};
#else
class DebugBenchmark
{
public:
template<typename ... T>
DebugBenchmark(T... args) {}
void Finish() {}
};
#endif
}
#define SysBenchmark(...) Aurora::Time::DebugBenchmark _(__VA_ARGS__);