void to_string(float val, std::string &out, size_t maxLength = 5) {
out.clear();
std::format_to_n(std::back_inserter(out), maxLength, "{:.1f}"sv, val);
}
void to_string(unsigned int val, std::string &out) {
out.clear();
std::format_to_n(std::back_inserter(out), 3, "{}"sv, val);
}
void Profiler::Profile(void) {
_endTime = GetExactTime();
textBox.clear();
textBox.append(header);
std::string ave, min, max, num; //hoisted out of loop for re-se.
for (const auto &sample : samples) {
assert_if_invalid(sample);
const auto sampleTime = sample.accumulator - sample.childrensTime;
const auto percentTime = (sampleTime / (_endTime - _startTime)) * 100.0f;
StoreProfileInHistory(sample.name, percentTime);
const auto [aveTime, minTime, maxTime] = GetProfileFromHistory(sample.name);
to_string(aveTime, ave);
to_string(minTime, min);
to_string(maxTime, max);
to_string(sample.count, num);
textBox += std::format("{:5} : {:5} : {:5} : {:5} : {}\n"sv,
ave, min, max, num, indent_n(sample.parentCount, sample.name));
}
samples.clear();
_startTime = GetExactTime();
}
Comments
0 B
|👍
/👎