Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

faster percentile updates #122

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

paulsinnett
Copy link

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
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