diff --git a/engine/engine.c b/engine/engine.c index c28bd7d..5a2aec7 100644 --- a/engine/engine.c +++ b/engine/engine.c @@ -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