Skip to content

Adding safeguard to clock resolution estimation (Issue 3180) - #3182

Open
superman15625 wants to merge 1 commit into
catchorg:develfrom
superman15625:fix-benchmark-clock-resolution-cap
Open

Adding safeguard to clock resolution estimation (Issue 3180)#3182
superman15625 wants to merge 1 commit into
catchorg:develfrom
superman15625:fix-benchmark-clock-resolution-cap

Conversation

@superman15625

Copy link
Copy Markdown

Description

Added a limit to the variable "iter" in order to prevent the chances of bad_alloc errors on systems that have high resolution. The limit is currently at 100,000. The resolution calculation will be stopped when either "iter" has surpassed the limit, or the 500ms gap has passed. Furthermore, the code currently creates an TimePoint for each "iter" (the variable passed into resolution()), which can led to memory issues. Instead, this fix only stores the previous timestamp as that is what is needed to determine the delta on the fly.

GitHub Issues

This is a PR aimed to fix the issue #3180 where an user ran the benchmark on a system that was able to run over 1 million iterations in under 500ms, causing a bad_alloc exception due to the amount of TimePoint instantiations. First, I decided to implement the iteration limit, but then I realized that there wasn't a need to store every single TimePoint. As such, I decided to compute deltas by only storing the current and previous timestamp information.

This is my first pull request, so I won't jump the gun and say the issue is closed.
Thanks :)

@superman15625

Copy link
Copy Markdown
Author

The reason for the AppVeyor build fail is due to an InternalBenchmarkTest that does:
InternalBenchmark.tests.cpp(434): FAILED: CHECK( (end - start).count() == 2867251000 )
With the changes (limiting how far the fake clock can run), the new result is 1847245000.

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