You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Performance (the tool needs to be fast to run as part of CI):
Improve Memory Diagnoser BenchmarkDotNet#606 "Improve Memory Diagnoser" - BDN required one extra process run to get the memory statistics, I have changed the architecture to require only one extra iteration. We need one extra iteration because for desktop .NET we are using AppDomain.MonitoringIsEnabled which adds an extra overhead. So we run the benchmarks without overhead, measure time, enable monitoring and run one extra iteration to get the memory statistics (fixed by @adamsitnik, was part of 0.10.12 release)
Run Disassembly Diagnoser without extra run BenchmarkDotNet#543 "Run Disassembly Diagnoser without extra run" - BDN required one extra process run to get the disassembly, I have changed the architecture to synchronize parent and child processes and get the disassembly after running the benchmarks, but before quiting the process (fixed by @adamsitnik, was part of 0.10.12 release)
Generate one executable per runtime settings BenchmarkDotNet#699 "Generate one executable per runtime settings" BDN used to build an extra exe per benchmark. It was taking a lot of time. , I have changed the architecture, now it groups the benchmarks by runtime settings (framework/JIT/GC etc) and builds in parallel one exe for the entire group of benchmarks. For BenchmarkDotNet.Samples project with 650 benchmarks it used to take 1h to build the extra exes. Now its's 13s on my PC (fixed by @adamsitnik, will be part of 0.11.00 release)
Private runtimes support (BenchmarkDotNet compiles new exe, so it needs to know how to work with private builds):
BenchmarkDotNet requires dotnet cli toolchain to be installed BenchmarkDotNet#648 "BenchmarkDotNet requires dotnet cli toolchain to be installed". Prior joining MS I had no idea that you run .NET Core apps without adding dotnet cli to the PATH. Now it's optional and user can provide path to dotnet cli which should be used (fixed by @adamsitnik, was part of 0.10.13 release)
Support private builds of .NET Runtime BenchmarkDotNet#706 "Support private builds of .NET Runtime" - @vitek-karas needed to measure the perf difference after his recent NGEN changes. He wanted to compare the existing .NET Framework with his private build of CLR. This feature simply sends the provided version as COMPLUS_Version env var to the benchmarked process and allows to benchmark private desktop CLR builds. (fixed by @adamsitnik, was part of 0.10.14 release)
Improve local CoreCLR support BenchmarkDotNet#700 "Support private CoreCLR and CoreFX buids" - users can now use ANY CoreCLR and CoreFX builds for benchmarking. Uses dotnet cli to publish self-contained app, works on Windows, Linux and Mac. (fixed by @adamsitnik, will be part of 0.11.00 release)
This is a list of requirements that need to be met before we switch from xunit-performance to BenchmarkDotNet.
Missing features:
0.10.11
release)[InlineData]
and[MemberData]
(fixed by @adamsitnik, was part of0.10.14
release)0.10.13
release)0.11.00
release)0.11.00
release)Performance (the tool needs to be fast to run as part of CI):
AppDomain.MonitoringIsEnabled
which adds an extra overhead. So we run the benchmarks without overhead, measure time, enable monitoring and run one extra iteration to get the memory statistics (fixed by @adamsitnik, was part of0.10.12
release)0.10.12
release)BenchmarkDotNet.Samples
project with 650 benchmarks it used to take 1h to build the extra exes. Now its's 13s on my PC (fixed by @adamsitnik, will be part of0.11.00
release)Private runtimes support (BenchmarkDotNet compiles new exe, so it needs to know how to work with private builds):
0.10.13
release)LangVersion
project setting BenchmarkDotNet#643 "BenchmarkDotNet should respectLangVersion
project setting" - just copy it to the auto-generated project (fixed by @adamsitnik, was part of0.10.13
release)COMPLUS_Version
env var to the benchmarked process and allows to benchmark private desktop CLR builds. (fixed by @adamsitnik, was part of0.10.14
release)0.11.00
release)Verification:
I am tagging the Perf Team and the people who are interested in the progress:
@jorive @valenis @adiaaida @DrewScoggins @brianrob
@ViktorHofer @danmosemsft @eerhardt
@AndyAyersMS @JosephTremoulet
@davidfowl @DamianEdwards
The text was updated successfully, but these errors were encountered: