54 lines
1.1 KiB
C++
54 lines
1.1 KiB
C++
/***
|
|
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(STAGING)) && (!defined(AU_FORCE_NOBENCHMARK)))
|
|
|
|
class DebugBenchmark
|
|
{
|
|
public:
|
|
DebugBenchmark(AuString message) : message_(message) {}
|
|
|
|
~DebugBenchmark()
|
|
{
|
|
Finish();
|
|
}
|
|
|
|
void Finish()
|
|
{
|
|
if (AuExchange(finished_, true)) return;
|
|
auto time = timer_.End();
|
|
Aurora::Console::Logging::LogDbg("[Benchmark] {} took {}", message_, ConvertMSToTimescaleEN(time));
|
|
}
|
|
|
|
private:
|
|
Timer timer_;
|
|
bool finished_ {};
|
|
AuString message_;
|
|
};
|
|
|
|
#else
|
|
|
|
class DebugBenchmark
|
|
{
|
|
public:
|
|
template<typename ... T>
|
|
DebugBenchmark(T... args) {}
|
|
|
|
void Finish() {}
|
|
};
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
#define SysBenchmark(...) Aurora::Time::DebugBenchmark _(__VA_ARGS__); |