graphy icon indicating copy to clipboard operation
graphy copied to clipboard

faster percentile updates

Open paulsinnett opened this issue 5 months ago • 1 comments

The sorted array used to calculate the 1% and 0.1% lows is generated from a histogram. This is an O(n) operation where n is the number of entries in 1% of sample buffer rather than the entire buffer. The histogram itself is implemented with a SortedList. Values are added and removed by maintaining the buffer as a double ended queue. Since this can also be used to calculate the average each frame without having to re-sum all the values, I have hooked that in as well. I have also adjusted the calculation of the quantiles to more accurately reflect the statistics.

Profiling this change on a test project in the Unity profile window, the G_FpsMonitor update goes from ~0.03 ms per frame to <0.01 ms per frame.

paulsinnett avatar Sep 15 '24 13:09 paulsinnett