Skip to content

faster percentile updates#122

Open
paulsinnett wants to merge 1 commit intoTayx94:masterfrom
paulsinnett:faster-percentile-update
Open

faster percentile updates#122
paulsinnett wants to merge 1 commit intoTayx94:masterfrom
paulsinnett:faster-percentile-update

Conversation

@paulsinnett
Copy link
Copy Markdown

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.

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. 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.
@paulsinnett
Copy link
Copy Markdown
Author

Note: I made this patch before realizing it had already been addressed in #114

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant