Track and display maxima in performance monitor

This commit is contained in:
Camden Dixie O'Brien 2025-01-04 10:31:30 +00:00
parent 51cd623af9
commit 6c248b0707

View File

@ -22,6 +22,7 @@
typedef struct {
double freq;
uint64_t start, evt, update, render;
double max_start, max_evt, max_update, max_render, max_total;
} perf_t;
int main(int argc, char *argv[])
@ -74,15 +75,26 @@ int main(int argc, char *argv[])
// Print performance analysis every 16 frames
if ((frame & 15) == 0) {
const double evt = (perf.evt - perf.start) / perf.freq;
if (evt > perf.max_evt)
perf.max_evt = evt;
const double update = (perf.update - perf.evt) / perf.freq;
if (update > perf.max_update)
perf.max_update = update;
const double render = (perf.render - perf.update) / perf.freq;
if (render > perf.max_render)
perf.max_render = render;
const double total = (perf.render - perf.start) / perf.freq;
if (total > perf.max_total)
perf.max_total = total;
const double total_pc = 100 * total / (1000000 * interval);
printf(
VT100_CLEAR VT100_CURSORTOPLEFT
"evt\t%10.3f μs\nupdate\t%10.3f μs\nrender\t"
"%10.3f μs\ntotal\t%10.3f μs (%.2f%% of %.3f ms)\n",
evt, update, render, total, total_pc, 1000 * interval);
"evt\t[max %10.3f μs] %10.3f μs\n"
"update\t[max %10.3f μs] %10.3f μs\n"
"render\t[max %10.3f μs] %10.3f μs\n"
"total\t[max %10.3f μs] %10.3f μs -- %.2f%% of %.3f ms\n",
perf.max_evt, evt, perf.max_update, update, perf.max_render,
render, perf.max_total, total, total_pc, 1000 * interval);
}
++frame;
#endif