94 ChangeLog
Andrey Akinshin редактировал(а) эту страницу 2018-04-09 12:55:05 +03:00
Этот файл содержит неоднозначные символы Юникода!

Этот файл содержит неоднозначные символы Юникода, которые могут быть перепутаны с другими в текущей локали. Если это намеренно, можете спокойно проигнорировать это предупреждение. Используйте кнопку Экранировать, чтобы подсветить эти символы.

0.10.14

In the v0.10.14 scope, 8 issues were resolved and 11 pull requests where merged. This release includes 47 commits by 8 contributors.

Resolved issues (8)

Merged pull requests (11)

Commits (47)

Contributors (8)

Thank you very much!

Date: April 09, 2018

Milestone: v0.10.14 (List of commits)

NuGet Packages:

0.10.13

In the v0.10.13 scope, 15 issues were resolved and 9 pull requests where merged. This release includes 50 commits by 8 contributors.

Overview post: BenchmarkDotNet v0.10.13

Resolved issues (15)

  • #541 Mono Support for DisassemblyDiagnoser (assignee: @morgan-kn)
  • #614 Build fails with "'Microsoft.NETCore.App', version '1.1.2' was not found" probably due to 1.1.4 runtime not being available
  • #626 Support Visual Basic project files (.vbroj) targeting .NET Core (assignee: @adamsitnik)
  • #630 Bug: Statistics.DivMean - NullReferenceException (assignee: @AndreyAkinshin)
  • #631 Bug: Generic benchmark class fails for DisassemblyDiagnoser with "Sequence contains no matching element" (assignee: @adamsitnik)
  • #632 ParamsSource no longer sorted in results (assignee: @AndreyAkinshin)
  • #634 Extend SummaryOrderPolicy (assignee: @adamsitnik)
  • #636 Unable to run Runner.exe --method MethodName (assignee: @adamsitnik)
  • #640 Disassembler fails with generic instance (assignee: @adamsitnik)
  • #643 Feature 'private protected' is not available in C# 7.0. Please use language version 7.2 or greater. (assignee: @adamsitnik)
  • #644 BenchmarkDotNet.Mathematics.RankHelper again. (assignee: @AndreyAkinshin)
  • #648 BenchmarkDotNet requires dotnet cli toolchain to be installed (assignee: @adamsitnik)
  • #651 Support ANY CoreFX and CoreCLR builds (assignee: @adamsitnik)
  • #652 BenchmarkSwitcher should support generic types with parameterless public ctors (assignee: @adamsitnik)
  • #653 Proper way to run BenchmarkDotNet on macOS/Linux (assignee: @adamsitnik)

Merged pull requests (9)

  • #624 Upgrade build tools (by @Ky7m)
  • #625 Fix xunit warnings connected to usage of Assert.Equal() to check for Null (by @Ky7m)
  • #633 HostEnvironmentInfo: remove LogicalCoreCount (by @morgan-kn)
  • #637 Mono Support for DisassemblyDiagnoser #541 (by @morgan-kn)
  • #639 Portability.Cpu tests improvements (by @morgan-kn)
  • #642 sync DataContracts to CopiedDataContracts (by @morgan-kn)
  • #645 Fixing --help display for options (by @ENikS)
  • #646 Allow sorting by the Method name in DefaultOrderProvider and OrderProviderAttribute (by @ENikS)
  • #666 Plots...Examples...Added A config example in F# (by @ScottHutchinson)

Commits (50)

Contributors (8)

Thank you very much!

Date: March 02, 2018

Milestone: v0.10.13 (List of commits)

NuGet Packages:

0.10.12

In the v0.10.12 scope, 14 issues were resolved and 10 pull requests where merged. This release includes 42 commits by 9 contributors.

Overview post: BenchmarkDotNet v0.10.12

Highlights

  • Improved DisassemblyDiagnoser: BenchmarkDotNet contains an embedded disassembler so that it can print assembly code for all benchmarks; it's not easy, but the disassembler evolves in every release.
  • Improved MemoryDiagnoser: it has a better precision level, and it takes less time to evaluate memory allocations in a benchmark.
  • New TailCallDiagnoser: now you get notifications when JIT applies the tail call optimizations to your methods.
  • Better environment info: when your share performance results, it's very important to share information about your environment. The library generates the environment summary for you by default. Now it contains information about the amount of physical CPU, physical cores, and logic cores. If you run a benchmark on a virtual machine, you will get the name of the hypervisor (e.g., Hyper-V, VMware, or VirtualBox).
  • Better summary table: one of the greatest features of BenchmarkDotNet is the summary table. It shows all important information about results in a compact and understandable form. Now it has better customization options: you can display relative performance of different environments (e.g., compare .NET Framework and .NET Core) and group benchmarks by categories.

Resolved issues (14)

Merged pull requests (10)

Commits (42)

Contributors (9)

Thank you very much!

Date: January 15, 2018

Milestone: v0.10.12 (List of commits)

NuGet Packages:

0.10.11

Highlights

  • ByRef and Stack-only support (#492, sample)
  • .NET Core 2.1 support (#587)
  • Improved LINQPad support
  • Smart logic for precision in ScaledColumn (#509, #590)
  • Better macOS version detection (15d72388)
  • Minor fixes and improvements

Resolved Issues

  • #509 Better formatting for the Scaled column
  • #579 Improve error message about non-optimized dependencies
  • #580 How to get benchmarks running from LINQPad?
  • #587 Support netcoreapp2.1
  • #588 Broken appveyor build
  • #593 BenchmarkDotNet is not working with LinqPad

Merged Pull Requests

  • #492 ByRef and Stack-only support
  • #575 xUnit runner upgrade and small tests refactoring
  • #584 Fixed typo
  • #589 Add support for netcoreapp2.1
  • #590 Add precision to Scaled Column
  • #591 Fix CI build
  • #592 Removed a xunit workaround because an issue has been fixed
  • #597 Fix typo in WithCustomBuildConfiguration API

Commits and Contributors

This release includes 18 commits by 8 contributors:

Date: December 01, 2017

Milestone: v0.10.11 (List of commits)

NuGet Packages:

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

This release includes 95 commits by 12 contributors:

Thank you very much!

Resolved Issues

  • #160 Make ClrMd Source diagnoser working with new ClrMD api
  • #167 Detect virtual machine environment
  • #262 Runtime knobs
  • #310 Support 32bit benchmarks for .NET Core
  • #350 ParamsSource
  • #437 Add DisassemblyDiagnoser for outputting disassembled JITed code
  • #466 MSBuild parameters are not passed to generated benchmark project
  • #495 Attributes put on base methods are not considered in derived class
  • #500 Borken compilation for net46 projects when .NET Framework 4.7 is installed
  • #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
  • #526 Remove project.json support
  • #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
  • #535 No way to set RuntimeFrameworkVersion in multiple-version config
  • #536 Strange disassembly ordering/truncation
  • #537 Can't benchmark a netstandard2.0 project
  • #538 Duplicate using causing benchmark not to work
  • #539 Target .NET Core 2.0 to take advantage of the new APIs
  • #540 Artifacts for disassembler projects
  • #542 Problems with Disassembler + Job.Dry
  • #555 Test "CanDisassembleAllMethodCalls" fails on Ubuntu
  • #556 Table in report is broken in VSCode markdown viewer
  • #558 Warn the users when running Benchmarks from xUnit with shadow copy enabled
  • #559 DissassemblyDiagnoser jit/arch info seems to be wrong
  • #561 Strange behaviour when benchmark project is build in debug mode
  • #562 DisassemblyDiagnoser crashes on overloaded benchmark
  • #564 [Bug] Benchmarking a method doesn't run global setup when filter is applied
  • #571 Allow users to use non compile-time constants as Parameters

Merged Pull Requests

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

Date: November 03, 2017

Milestone: v0.10.10 (List of commits)

NuGet Packages:

0.10.9

Date: July 28, 2017

Milestone: v0.10.9

NuGet Packages:

0.10.8

Date: June 09, 2017

Milestone: v0.10.8

NuGet Packages:

0.10.7

  • LINQPad support (5.22.05+) (#66, #445)
  • Benchmark filters and categories (#248)
  • Updated setup/cleanup attributes: [GlobalSetup], [GlobalCleanup], [IterationSetup], [IterationCleanup] (#270, #274, #325, #456)
  • Better Value Types support (afa803d0)
  • Building Sources on Linux: it's possible to build the solution (with unloaded F#/VB projects), run samples (for both net46/netcoreapp1.1), run unit tests (for netcoreapp1.1 only)
  • Fix minor bugs in JsonExporter (#451)

Date: June 05, 2017

Milestone: v0.10.7

Overview post: http://aakinshin.net/blog/post/bdn-v0_10_7/

NuGet Packages:

0.10.6

  • Removed buggy allocation from Engine which was spoiling the results of MemoryDiagnoser for micro benchmarks. This part of the code is now guarded with very strict integration tests, it should never happen again. We now also exclude the side effects of the Allocation Quantum. This bug was serious, you must update to 0.10.6 (#439)
  • Support of the PackageTargetFallback setting which allows to reference components that target old framework monikers (like dotnet5.4 or portable-net45+win8) (#438)
  • Added InstructionRetiredPerCycleColumn which shows up automatically when HardwareCounter.InstructionRetired and HardwareCounter.TotalCycles are used.
  • Support benchmark classes without namespace (#446)
  • Fix problem with RPlotExporter and quoted directories in %PATH% (#446)
  • Show Windows brand version in summary

Date: May 12, 2017

Milestone: v0.10.6

NuGet Packages:

0.10.5

  • Fixed SizeUnit presentation in the summary table (#434)
  • In MemoryDiagnoser, now 1kB = 1024B (instead of 1000 in v0.10.4) (#434)
  • Fix false allocations detection (#436 9b44de70)
  • Hide ScaledSD column for small values (da857ad7)
  • Autoselecting amount of digits after the decimal point (#404)

Date: April 26, 2017

Milestone: v0.10.5

NuGet Packages:

0.10.4

  • New logo
  • Update to Roslyn 2.0, drop .NET 4.5 support (#303)
  • Initial support of HardwareCounters (Windows only)
  • Initial experimental support of in-process benchmarks
  • Optional configs for BenchmarkSwitcher (#391, #392)
  • Host API interface (#356)
  • Improved measurements for async benchmarks (#415)
  • Improved precision level (MinIterationTimes is 500ms instead of 200ms; introduced AccuracyMode.MaxAbsoluteError and AccuracyMode.MaxRelativeError instead of AccuracyMode.MaxStdErrRelative; logic which select amount of iterations uses confidence intervals instead of standard errors; the Error column (half of CI99.9%) is shown by default instead of StdErr)
  • Introduced ISummaryStyle, raw data in CSV reports (#118, #146, #396)
  • Handle cases when report files are existed and locked (#414, #416)
  • MarkdownExporter right-justifies numeric columns (#421)
  • Better colors for console output (#376)
  • Column legends
  • Add information about CPU microarchitecture for well-known processors to summary
  • Fix AssemblyInformationalVersionAttribute (#382)
  • Fix incorrect method filtering in BenchmarkSwitcher (#365)
  • Fix OS Version in Summary for Windows 10 (#351)
  • Fix OS Version on Mono
  • Fix --class and --method filtering (#249)
  • Fix --exporters option (#189)
  • Fix escaping logic in CsvExporter (#294, #409)
  • Fix MacOS detection
  • Minor bugfixes and API improvements

Date: April 21, 2017

Milestone: v0.10.4

NuGet Packages:

0.10.3

  • New .csprojs support for .NET Core. Also for F# (#366)!
  • New plots and RPlotExporter (density plots for each job; cumulative mean plots)
  • Fixed exporter order (now RPlotExporer uses the actual measurements instead of previous version)
  • Xplat improvments in RuntimeInformation
  • Introduced RunStrategy.Monitoring
  • Possibility to set custom path for Mono (#306)
  • Possibility to set any .NET Core version >= 1.1 (#336)
  • MemoryDiagnoser is now disabled by default (Breaking changes!!) (#369)

Date: March 01, 2017

Milestone: v0.10.3

NuGet Packages:

0.10.2

  • Closed #307: culture invariant statistics output
  • Closed #321: persist optimized, auto-generated dll compiled from url/plain code
  • Closed #322: always restore the console foreground color
  • Closed #337: Better detection of Rscript.exe in RPlotExporter
  • Closed #345: fix bug in WelchTTestPValueColumn for DryJob
  • VS 2017 compatibility fix
  • fix bold markup for Atlassian exporter
  • Improved precision of nanobenchmarks
  • Minor infrastructure changes and misc fixes

Date: January 21, 2017

Milestone: v0.10.2

NuGet Packages:

0.10.1

  • MemoryDiagnoser got improved. The changes:
    • Memory Diagnoser is now part of BenchmarkDotNet.Core.dll, and it's enabled by default
    • MemoryDiagnoser is 100% accurate about allocated memory when using default settings or Job.ShortRun or any longer job. (see #284)
    • Memory Diagnoser no longer includes allocations from Cleanup/Setup methods (see #186)
    • the results are now scaled so they are stable across the runs. (see #133)
  • .NET Core 1.1+ support, we no longer support 1.0, we target netcoreapp1.1 now. Reason: we wanted to use GC.GetAllocatedBytesForCurrentThread in MemoryDiagnoser which is available only in 1.1+
  • Improved information about environment in summary
  • Minor bugfixes

Date: December 04, 2016

Milestone: v0.10.1

NuGet Packages:

0.10.0

  • Now BenchmarkDotNet is a part of .NET Foundation
  • Job and Column API refactoring (see new documentation)
  • Measurement engine improvements
  • Horology enhancement (see TimeInterval and Frequency)
  • Introduced RankColumn which is based on WelchTTest (see 157aabc3)
  • JsonExporters refactoring (see the Exporters/Json section in the documentation)
    • Renamed JsonExporters classed and attributes
    • JsonExporters with custom settings
    • JsonExporters now includes information about the target type namespace (see #246).
  • Add JetBrains.Annotations (see #253)
  • RFC 4180 support in CSV exporters (see #241)
  • Many bugfixes

Date: November 10, 2016

Milestone: v0.10.0

NuGet Packages:

Online Documentation: https://dotnet.github.io/BenchmarkDotNet/

0.9.9

  • Attribute config style (see #166)
  • Online documentation (see #219)
  • Mono LLVM support (see #226)
  • Async method support (see #236)
  • NuGet packages and repo layout restructuring (see #225, #228)
  • [Cleanup] attribute (see #215)
  • New statistics columns: Skewness, Kurtosis, WelchTTestPValue, Improved math for the Scaled column
  • Now current default branch is master
  • Minor improvements and bug fixes

Date: August 18, 2016

Milestone: v0.9.9

NuGet Packages:

Online Documentation: https://perfdotnet.github.io/BenchmarkDotNet/

0.9.8

  • CoreCLR RTM support (see #216). Breaking change: we have dropped dnx451 and dnxcore50 support.
  • Migration from MSBuild to Roslyn, which supports Mono on Linux and MacOS (see #149). Breaking change: we have dropped .NET 4.0 support.
  • Ability to manage GC mode: turn on/off the Server/Concurrent GC modes, extend to CPU groups, set gcAllowVeryLargeObjects and avoid BenchmarkDotNet from forcing GC.Collect (see #188, #76 and #211)
  • Support CopyToOutput (see #212). Now you can use native dependencies as well as custom files.
  • Copying custom settings from app.config (see #108). It means we support assembly binding redirects as well as custom connection strings etc.
  • AsciiDocExporter (see #169)
  • Framework setting in Job has been removed (see #194)
  • Minor bugfixes and improvements

Milestone: v0.9.8

Date: July 07, 2016

NuGet Packages:

0.9.7

  • .NET Core RC2 support (see #187)
  • Bugfixes

Milestone: v0.9.7

Date: May 29, 2016

NuGet Packages:

0.9.6

  • Added Percentiles (see #164)
  • Added support for Json export (see #84)
  • Bugfixes

Milestone: v0.9.6

Date: May 11, 2016

NuGet Packages:


0.9.5

  • Added validators, JitOptimizationsValidator detects all non-optimzied dlls that were referenced #134
  • Strong naming #101
  • Add IOrderProvider #107
  • Putting all the generated artifacts in a separate folder: ./BenchmarkDotNet.Artifacts/results and ./BenchmarkDotNet.Artifacts/bin #94
  • Printing dotnet cli version for .NET Core and Dnx451, informing user when not installed. Closed #128
  • Supporting assembly redirects #67
  • Changed used msbuild version: 12 for .NET 4.5 (VS 2013), 14 for .NET 4.6 (VS 2015). Closed #132 and #137
  • Switched to new dotnet target framework monikers (dotnet5.4 instead of dnxcore50), why
  • dnx452, dnx46, net462 support added
  • Executing single Benchmark for multiple Runtimes also with Diagnoser attached (see #117)
  • Misc minor changes

Milestone: v0.9.5

Date: May 02, 2016

NuGet Packages:


0.9.4

  • Improved messages about error in benchmarks, see #104
  • Natural sort order, see #92, #95, #97
  • Improved double/float/decimal/enum support for Params, see #96, #105, #116
  • Now environment info includes information about HardwareTimerKind and JitModules
  • Added DryConfig
  • Improved export performance, closed #119, merged #124
  • Better cmd-line discoverability (see #78), e.g. run Benchmark.exe --help and some useful information will be printed
  • Supporting all kinds of references for generated project (exact version, custom paths, GAC, sub-folders, dependent assemblies not copied), closed #41, #49, #72, #123, merged #125
  • Friendliness to LinqPad restored, closed #66, merged #125

Milestone: v0.9.4

Date: March 24, 2016

NuGet Packages:


0.9.3

  • CoreCLR support (Closed #52, Merged #113)

Milestone: v0.9.3

Date: March 13, 2016

NuGet Packages:


0.9.2

  • Dnx451 support (Closed #51, Merged #87)

Milestone: v0.9.2

Date: March 5, 2016

NuGet Packages:


0.9.1

Date: February 10, 2016

NuGet Packages:


0.9.0

  • New API
  • Autodetermination of amount iteration for warmup/target idle/main iterations, duration of iteration, amount of CLR launches.

Date: February 9, 2016

NuGet Packages:


0.8.2

  • Changes in the Summary table
    • Summary table now supports ResultExtenders that can add new column to the table
    • Now we use StandardError (aka Error) as the main accuracy metric
    • Columns op/s, StdDev are disabled by default (you can add it via ResultExtenders)
  • Statistic improvements, now you have detailed statistic in the console log like follows:
Mean = 118.5298 us, StdError = 1.2863 us (N = 30, StdDev = 7.0454 us)
Min = 109.1602 us, Median = 117.1794 us, Max = 132.5764 us
IQR = 10.1244 us, LowerFence = 98.0834 us, UpperFence = 138.5810 us
ConfidenceInterval = [116.0086 us; 121.0510 us] (CI 95%)
  • Added the Baseline feature, see #64
  • Export improvements, now you have files <BenchmarkName>-report-github.md, <BenchmarkName>-report-stackoverflow.md for easy publishing results on GitHub and StackOverflow.
  • Basic plotting. Added new BenchmarkRPlotExporter that creates BuildPlots.R in the bin directory. It is an R script that generates boxplot and barplot for your benchmarks (you should have installed R with defined R_HOME environment variable)
  • Updated environment info
    • Added Stopwatch Frequency and Resolution
    • Split common benchmark properties (like Mode, Platform, Runtime) in several lines (3 properties per line)
  • Log improvements: add total time, statistics, list of exported files
  • Bug fixes

Date: January 19, 2016

NuGet Packages: