Show / Hide Table of Contents

BenchmarkDotNet v0.10.10

Highlights:

  • Disassembly Diagnoser (read more here: Disassembling .NET Code with BenchmarkDotNet)
  • ParamsSources
  • .NET Core x86 support
  • Environment variables and Mono args support
  • Better environment description
  • More: additional sections in the documentation, bug fixes, build script improvements, internal refactoring.

Overview post: BenchmarkDotNet v0.10.10

Milestone details

In the v0.10.10 scope, 34 issues were resolved and 18 pull requests were merged. This release includes 95 commits by 11 contributors.

Resolved issues (34)

  • #160 Make ClrMd Source diagnoser working with new ClrMD api (assignee: @adamsitnik)
  • #167 Detect virtual machine environment (assignee: @lukasz-pyrzyk)
  • #262 Runtime knobs (assignee: @adamsitnik)
  • #310 Support 32bit benchmarks for .NET Core (assignee: @adamsitnik)
  • #350 ParamsSource (assignee: @adamsitnik)
  • #437 Add DisassemblyDiagnoser for outputting disassembled JITed code. (assignee: @adamsitnik)
  • #466 MSBuild parameters are not passed to generated benchmark project (assignee: @adamsitnik)
  • #495 Attributes put on base methods are not considered in derived class (assignee: @lukasz-pyrzyk)
  • #500 Borken compilation for net46 projects when .NET Framework 4.7 is installed (assignee: @adamsitnik)
  • #505 JsonExporterBase doesn't include MemoryDiagnoser stats in output
  • #511 [bug] Bug in GetTargetedMatchingMethod() logic
  • #513 IterationSetup not run in Job.InProcess
  • #516 Get a compilation error "CS1009: Unrecognized escape sequence" when using verbatim strings
  • #519 BenchmarkSwitcher.RunAllJoined throws InvalidOperationException (assignee: @AndreyAkinshin)
  • #526 Remove project.json support (assignee: @adamsitnik)
  • #529 No namespace in export filenames can lead to data loss
  • #530 Build error on Appveyor with recent changes.
  • #533 When I clone, build, and run BenchmarkDotNet.Samples I get an error
  • #534 Allow the users to compare 32 vs 64 RyuJit for .NET Core (assignee: @adamsitnik)
  • #535 No way to set RuntimeFrameworkVersion in multiple-version config (assignee: @adamsitnik)
  • #536 Strange disassembly ordering/truncation (assignee: @adamsitnik)
  • #537 Can't benchmark a netstandard2.0 project (assignee: @adamsitnik)
  • #538 Duplicate using causing benchmark not to work (assignee: @adamsitnik)
  • #539 Target .NET Core 2.0 to take advantage of the new APIs (assignee: @adamsitnik)
  • #540 Artifacts for disassembler projects (assignee: @adamsitnik)
  • #542 Problems with Disassembler + Job.Dry (assignee: @adamsitnik)
  • #555 Test "CanDisassembleAllMethodCalls" fails on Ubuntu (assignee: @adamsitnik)
  • #556 Table in report is broken in VSCode markdown viewer (assignee: @adamsitnik)
  • #558 Warn the users when running Benchmarks from xUnit with shadow copy enabled (assignee: @adamsitnik)
  • #559 DissassemblyDiagnoser jit/arch info seems to be wrong (assignee: @adamsitnik)
  • #561 Strange behaviour when benchmark project is build in debug mode (assignee: @adamsitnik)
  • #562 DisassemblyDiagnoser crashes on overloaded benchmark (assignee: @adamsitnik)
  • #564 [Bug] Benchmarking a method doesn't run global setup when filter is applied (assignee: @adamsitnik)
  • #571 Allow users to use non compile-time constants as Parameters (assignee: @adamsitnik)

Merged pull requests (18)

  • #507 Fix a typo in Jobs.md (by @aidmsu)
  • #508 Fixed some typos and grammar (by @lukasz-pyrzyk)
  • #512 Warning about antivirus software after benchmark failure (by @lukasz-pyrzyk)
  • #514 #495 - Unit test for reading attributes from the base class (by @lukasz-pyrzyk)
  • #515 Fix #513 - IterationSetup not run in Job.InProcess (by @ig-sinicyn)
  • #518 Fixed information about MemoryDiagnoser. (by @cincuranet)
  • #520 XML Exporter documentation and samples (by @Teknikaali)
  • #525 adding validator for setup cleanup attributes (by @ipjohnson)
  • #527 Detecting virtual machine hypervisor, #167 (by @lukasz-pyrzyk)
  • #531 Remove --no-build argument for dotnet test & pack commands. (by @Ky7m)
  • #532 Fix type of local in EmitInvokeMultipleBody (by @pentp)
  • #547 Fix markdown headers (by @jawn)
  • #548 Fix condition in package reference list and update dotnet cli version from 1.0.4 to 2.0.0 for non-Windows system (by @Ky7m)
  • #549 Project files cleanup (by @Ky7m)
  • #552 Fix exporters to use fully qualified filenames (by @Teknikaali)
  • #563 Remove leading space character in a MD table row, #556 (by @rolshevsky)
  • #565 Single point of full config creation (by @ig-sinicyn)
  • #569 Update cakebuild scripts (by @Ky7m)

Commits (95)

  • 682820 Fix typo in Jobs.md (by @aidmsu)
  • e82a8b Fixed some typos and grammar (by @lukasz-pyrzyk)
  • a0e9b9 Disassembly Diagnoser: displaying ASM, IL and C# for any JIT (by @adamsitnik)
  • 57e0f0 recursive disassembling (by @adamsitnik)
  • 1975ae return structured results from Disassembler (by @adamsitnik)
  • 9ae365 Warning about antivirus software after benchmark failure (#512) (by @lukasz-pyrzyk)
  • 74b41e Unit test for reading attributes from the base class, fixes #495 (by @lukasz-pyrzyk)
  • 3bab2d Fix #513 - IterationSetup not run in Job.InProcess (#515) (by @ig-sinicyn)
  • 769a39 use the IL instructions to detect more calls (by @adamsitnik)
  • b69537 use InstructionPointer to combine asm with hardware counters (by @adamsitnik)
  • 200244 Fixed information about MemoryDiagnoser. (by Jiri Cincura)
  • 848a1a handling the lovely edge cases (Cecil vs ClrMD differences in naming types an... (by @adamsitnik)
  • 40049b single text representation of asm is a range of IPs! (by @adamsitnik)
  • 56e252 XML Exporter documentation and samples (#520) (by @Teknikaali)
  • c18597 eliminate duplicates (ClrMD fault), be more defensive for edge cases (by @adamsitnik)
  • a9262f allow the users to specify recursive depth limit (50MB output for simple lock... (by @adamsitnik)
  • fbe329 Support params which include slashes, fixes #516 (by @AndreyAkinshin)
  • f2b9c0 Fix RunAllJoined, fixes #519 (by @AndreyAkinshin)
  • 983764 UX ;) (by @adamsitnik)
  • c010de adding validator for setup cleanup attributes (by @ipjohnson)
  • 424723 Merge pull request #525 from ipjohnson/master (by @adamsitnik)
  • 7b680a prefer unit tests over integration tests if possible (by @adamsitnik)
  • 93dc6e Remove project.json support, fixes #526 (by @adamsitnik)
  • 19f22b Merge pull request #518 from cincuranet/docs (by @adamsitnik)
  • fe2db1 configurable, runtime specific diagnosers, hard part transparent to end users (by @adamsitnik)
  • fb60e5 disassembly diagnoser for Mono (by @adamsitnik)
  • 55ce0d smart diagnoser can choose the right disassembler (by @adamsitnik)
  • 46c911 one test to verify all scenarios (by @adamsitnik)
  • d06086 minor improvements (by @adamsitnik)
  • 116119 group instructions into maps for better visualization (by @adamsitnik)
  • d19b1e test fix: split on any new line ;) (by @adamsitnik)
  • 647a67 Merge branch 'asm' (by @adamsitnik)
  • 91c8e4 move disassembler stuff to resources of Core project to make it super easy to... (by @adamsitnik)
  • 363900 Remove --no-build argument for dotnet test & pack commands. (by @Ky7m)
  • 22e993 Disable parallel build option (by @Ky7m)
  • 9c327c Merge pull request #531 from Ky7m/removes-no-build-argument (by @adamsitnik)
  • 20db28 the docs for Disassembly Diagnoser, #437 (by @adamsitnik)
  • 13732b added asm report with navigation (by @adamsitnik)
  • 33ee03 fix type of local in EmitInvokeMultipleBody (by @pentp)
  • 7d943f Merge pull request #532 from pentp/master (by @adamsitnik)
  • 4d173d RyuJit 32bit support for .NET Core, fixes #310, fixes #533 (by @adamsitnik)
  • 5f5237 test fix (set platform in explicit way to avoid lack of 32-bit .NET Core sdk ... (by @adamsitnik)
  • f359c9 allow the users to set custom RuntimeFrameworkVersion, fixes #535 (by @adamsitnik)
  • 264150 disassembler: print the results in machine code order, not il, part of #536 (by @adamsitnik)
  • 0088bd Detecting virtual machine hypervisor, #167 (#527) (by @lukasz-pyrzyk)
  • 007444 print all returns (maps with negative ILOffset are not always prolog or epilo... (by @adamsitnik)
  • aebc32 empty methods for LegacyJit64 have only maps with negative ILOffset, #536 (by @adamsitnik)
  • ba7489 docs for Toolchains, closes #537 (by @adamsitnik)
  • 8c4f53 allow the users to specify custom build configuration, #466, close #528 (by @adamsitnik)
  • eb80b2 Environment Variables support, #262 (by @adamsitnik)
  • ab7045 test fixes ;) (by @adamsitnik)
  • 455c60 allow the users to specify custom arguments (Mono, MsBuild), #466, #262 (by @adamsitnik)
  • e03384 make sure that all new custom settings are presented in human friendly way, #262 (by @adamsitnik)
  • cc8d07 enforce TreatWarningsAsErrors=False in auto-generated csproj to override glob... (by @adamsitnik)
  • 97ab49 target .NET Core 2.0 to take full advantage of the new API, fixes #539 (by @adamsitnik)
  • 8b2c7e check if reference assemblies are installed when choosing the default .NET fr... (by @adamsitnik)
  • feabd1 bump the .NET Core version, #539 (by @adamsitnik)
  • a21f86 for .NET Core 1.1 we should run only the Backward Compatibility tests. #539 (by @adamsitnik)
  • b7a966 typo fix (by @adamsitnik)
  • 73a30a docs: Customizing Mono, Env Variables & minor updates, fixes #262 (by @adamsitnik)
  • 612b41 exclude Artifacts for disassembler projects, fixes #540 (by @adamsitnik)
  • 360326 typo, #540 (by @adamsitnik)
  • f3e4ae show nice error when Job.Dry is used for Disassembler, fixes #542 (by @adamsitnik)
  • c6bbda allow to specify custom dotnet cli path to compare RyuJit 32 vs 64 for .NET C... (by @adamsitnik)
  • a0c7e5 Add info about Redstone 3,4 in WindowsBrandVersions (by @AndreyAkinshin)
  • d42262 Additional info about WindowsBrandVersions (by @AndreyAkinshin)
  • cd0a1f Improve formatting in WindowsBrandVersions (by @AndreyAkinshin)
  • 1cd844 Fix OsBrandStringTests.WindowsIsPrettified (by @AndreyAkinshin)
  • f00787 Fix markdown headers (by @jawn)
  • 363814 Merge pull request #547 from jawn/patch-1 (by @adamsitnik)
  • 405c4c Update dotnet cli version from 1.0.4 to 2.0.0 for non-Windows system. (#548) (by @Ky7m)
  • 97a9b2 Fix compiler warning connected to problem with the XML tag. (by @Ky7m)
  • 24585d Remove PackageTargetFallback element. (by @Ky7m)
  • 174c19 Merge pull request #549 from Ky7m/csproj-files-cleanup (by @AndreyAkinshin)
  • 84a4e2 Fix exporters to use fully qualified filenames (#552), fixes #529 (by @Teknikaali)
  • a7578a disable Disassembler tests for non-Windows OS, fixes #555 (by @adamsitnik)
  • a147dd Remove leading space character in a MD table row, fixes #556 (by @rolshevsky)
  • 9c194c DisassemblyDiagnoser crashes on overloaded benchmark, fixes #562 (by @adamsitnik)
  • 9076a6 give users nice warning when they run into shadow copy issues, fixes #558 (by @adamsitnik)
  • 1670ca the build fix ;) (by @adamsitnik)
  • d5854d Include UBR in Windows versions (by @AndreyAkinshin)
  • 1fcfee display correct runtime info in exported disassembly result, fixes #559 (by @adamsitnik)
  • de45ad Single point of full config creation (#565) (by @ig-sinicyn)
  • 395a52 make sure filters don't exclude Setup/Cleanup methods, fixes #564 (by @adamsitnik)
  • 4276ac fail when running benchmarks in Debug with DefaultConfig, fixes #561 (by @adamsitnik)
  • 0145f8 Fix build number for Windows 10 Fall Creators Update (by @AndreyAkinshin)
  • 7f7a7c Update cakebuild scripts (#569) (by @Ky7m)
  • cff577 introduce ParamsSource attribute, fixes #350, part of #256 (by @adamsitnik)
  • 3af915 introduce IParam to support complex, not-compile time constants as parameters... (by @adamsitnik)
  • 4a877f build the disassemblers before .Core, but don't add the dependency to them to... (by @adamsitnik)
  • 188850 specify all the embedded resources in explicit way to avoid some crazy MSBuil... (by @adamsitnik)
  • b5fbbf Typo fix (by @AndreyAkinshin)
  • eb90ce Update message in JitOptimizationsValidator (by @AndreyAkinshin)
  • 6c1137 Updated DotSettings (by @AndreyAkinshin)
  • 3d0dfe Set library version: 0.10.10 (by @AndreyAkinshin)

Contributors (11)

  • Adam Sitnik (@adamsitnik)
  • Andrey Akinshin (@AndreyAkinshin)
  • Andrey Dorokhov (@aidmsu)
  • Anssi Kettunen (@Teknikaali)
  • Bernard Vander Beken (@jawn)
  • Ian Johnson (@ipjohnson)
  • ig-sinicyn (@ig-sinicyn)
  • Igor Fesenko (@Ky7m)
  • Łukasz Pyrzyk (@lukasz-pyrzyk)
  • Pent Ploompuu (@pentp)
  • Rostislav Olshevsky (@rolshevsky)

Thank you very much!

Additional details

Date: November 03, 2017

Milestone: v0.10.10 (List of commits)

NuGet Packages:

  • https://www.nuget.org/packages/BenchmarkDotNet/0.10.10
  • https://www.nuget.org/packages/BenchmarkDotNet.Core/0.10.10
  • https://www.nuget.org/packages/BenchmarkDotNet.Toolchains.Roslyn/0.10.10
  • https://www.nuget.org/packages/BenchmarkDotNet.Diagnostics.Windows/0.10.10
  • Improve this Doc
In This Article
Back to top Copyright © 2013–2021 .NET Foundation and contributors