62 lines
2.0 KiB
C++
62 lines
2.0 KiB
C++
/*
|
|
* Created by Brett Terpstra 6920201 on 18/10/22.
|
|
* Copyright (c) 2022 Brett Terpstra. All Rights Reserved.
|
|
*/
|
|
#include <util/debug.h>
|
|
#include <chrono>
|
|
|
|
namespace Raytracing {
|
|
profiler::profiler(std::string name) {
|
|
this->name = name;
|
|
// currently unused as we don't have a UI yet.
|
|
//TD::debugUI::addTab(this);
|
|
}
|
|
|
|
void profiler::start() {
|
|
start("Unnamed");
|
|
}
|
|
void profiler::start(const std::string& name) {
|
|
auto p1 = std::chrono::high_resolution_clock::now();
|
|
_start = std::chrono::duration_cast<std::chrono::nanoseconds>(p1.time_since_epoch()).count();
|
|
timings[name] = std::pair<long, long>(_start, 0);
|
|
}
|
|
|
|
void profiler::end() {
|
|
end("Unnamed");
|
|
}
|
|
void profiler::end(const std::string& name) {
|
|
auto p1 = std::chrono::high_resolution_clock::now();
|
|
_end = std::chrono::duration_cast<std::chrono::nanoseconds>(p1.time_since_epoch()).count();
|
|
timings[name] = std::pair<long, long>(timings[name].first, _end);
|
|
}
|
|
|
|
void profiler::print() {
|
|
ilog << "Profiler " << name << " recorded: \n";
|
|
for (std::pair<std::string, std::pair<long, long>> e : timings){
|
|
ilog << "\t" << e.first << " took " << ((double)(e.second.second - e.second.first) / 1000000.0) << "ms to run!\n";
|
|
}
|
|
|
|
}
|
|
|
|
void profiler::endAndPrint() {
|
|
end();
|
|
print();
|
|
}
|
|
|
|
void profiler::render() {
|
|
// currently unused as we don't have a UI yet.
|
|
/*ImGui::Text("CPU Timings:");
|
|
ImGui::Indent();
|
|
for (std::pair<std::string, std::pair<long, long>> e : timings) {
|
|
ImGui::Text("Elapsed Time(%s): %fms", e.first.c_str(), (double) ((e.second.second - e.second.first) / 1000000.0));
|
|
}
|
|
ImGui::Unindent();
|
|
ImGui::NewLine();*/
|
|
}
|
|
|
|
profiler::~profiler() {
|
|
// currently unused as we don't have a UI yet.
|
|
//TD::debugUI::deleteTab(this);
|
|
}
|
|
}
|