Track and display maxima in performance monitor
This commit is contained in:
parent
51cd623af9
commit
6c248b0707
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user