-
-
Notifications
You must be signed in to change notification settings - Fork 978
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
Improve the performance of BenchmarkDotNet #550
Comments
Small progress: there is no need to run benchmarks one more time when Disassembly Diagnoser is used. After we are done benchmarking, the child process sends signal to parent process and waits for response. Parent is attaching to it with ClrMD and getting the disassembly. After this, it's unblocking the child process. This is done after running all benchmarks, so it does not affect accuracy in any way ;) TLDR: For those who used |
Another progress: MemoryDiagnoser no longer requires extra run of the benchmark. Both for classic and Core. See #606 for more details TLDR: For those who used MemoryDiagnoser the speedup is x2 ;) |
Another improvement: the benchmarks are now built in parallel. The more benchmarks you have (especially .NET Core) the bigger gain. Example: 4 .NET Core benchmarks (no SSD, 4 cores) => build time reduced from 40s to 14s. Details: the build is now silent (no output to log) if something fails, the failure is printed afterwards. |
@adamsitnik, awesome! |
…default dotnet cli behavior), part of #550
Another improvement will be #699 : Generate one executable per runtime settings |
Initial improvements for #699: building the benchmarks for our Samples project (more than 650 benchmarks in total) takes 13 seconds in total on my PC. When I had 600 benchmarks and it took 6s to build each the total was 3 600 s = 60 min = 1h. So the more benchmarks, the bigger gain |
I just finished running CoreCLR benchmark suite with different versions of BenchmarkDotNet. The results:
which means that we went from 4 hours 13 minutes with As soon as #771 gets merged I am going to close this issue. |
The CI package is already available, the version number is |
…default dotnet cli behavior), part of dotnet#550
Some of our users like @benaadams runs tons of benchmarks, which takes a lot of time (example)
I have a lot of ideas for speed-up.
It includes:
I am busy now, but I have no conferences for November/December scheduled so I will finally have some time for bigger changes
The text was updated successfully, but these errors were encountered: