Giter Site home page Giter Site logo

hydpublic / benchmarkdotnet Goto Github PK

View Code? Open in Web Editor NEW

This project forked from dotnet/benchmarkdotnet

0.0 2.0 0.0 13.96 MB

Powerful .NET library for benchmarking

Home Page: http://benchmarkdotnet.org/

License: MIT License

Batchfile 0.34% C# 98.28% PowerShell 0.44% Shell 0.30% R 0.55% F# 0.08% Visual Basic 0.02%

benchmarkdotnet's Introduction

NuGet Gitter Build status License Overview ChangeLog

BenchmarkDotNet is a powerful .NET library for benchmarking.

Benchmarking is really hard (especially microbenchmarking), you can easily make a mistake during performance measurements. BenchmarkDotNet will protect you from the common pitfalls (even for experienced developers) because it does all the dirty work for you: it generates an isolated project per each benchmark method, does several launches of this project, run multiple iterations of the method (include warm-up), and so on. Usually, you even shouldn't care about a number of iterations because BenchmarkDotNet chooses it automatically to achieve the requested level of precision.

It's really easy to design a performance experiment with BenchmarkDotNet. Just mark your method with the [Benchmark] attribute and the benchmark is ready. Want to run your code on CoreCLR, Mono, and the Full .NET Framework? No problem: a few more attributes and the corresponded projects will be generated; the results will be presented at the same summary table. In fact, you can compare any environment that you want: you can check performance difference between processor architectures (x86/x64), JIT versions (LegacyJIT/RyuJIT), different sets of GC flags (like Server/Workstation), and so on. You can also introduce one or several parameters and check the performance on different inputs at once.

BenchmarkDotNet helps you not only run benchmarks but also analyze the results: it generates reports in different formats and renders nice plots. It calculates many statistics, allows you to run statistical tests, and compares results of different benchmark methods. So it doesn't overload you with data, by default BenchmarkDotNet prints only the really important statistical values depending on your results: it allows you to keep summary small and simple for primitive cases but notify you about additional important area for complicated cases (of course you can request any numbers manually via additional attributes).

BenchmarkDotNet doesn't just blindly run your code - it tries to help you to conduct a qualitative performance investigation.

Useful links

  • If you want to know more about BenchmarkDotNet features, checkout the Overview page.
  • If you want to use BenchmarkDotNet for the first time, the Getting Started will help you.
  • If you want to contribute, checkout the Contributing and up-for-grabs issues.
  • If you want to ask quick question, use the gitter channel.

Summary

  • Standard benchmarking routine: generating an isolated project per each benchmark method; auto-selection of iteration amount; warmup; overhead evaluation; statistics calculation; and so on.
  • Supported runtimes: Full .NET Framework (4.6+), .NET Core (1.1+), Mono
  • Supported languages: C#, F#, and Visual Basic
  • Supported OS: Windows, Linux, MacOS
  • Easy way to compare different environments (x86 vs x64, LegacyJit vs RyuJit, and so on; see: Jobs)
  • Reports: markdown, csv, html, plain text, png plots.
  • Advanced features: Baseline, Params
  • Powerful diagnostics based on ETW events (see BenchmarkDotNet.Diagnostics.Windows)

Code of Conduct

This project has adopted the code of conduct defined by the Contributor Covenant to clarify expected behavior in our community. For more information see the .NET Foundation Code of Conduct.

.NET Foundation

This project is supported by the .NET Foundation.

benchmarkdotnet's People

Contributors

andreyakinshin avatar adamsitnik avatar mattwarren avatar alinasmirnova avatar ig-sinicyn avatar redknightlois avatar ky7m avatar teknikaali avatar gigi81 avatar fransbouma avatar lukasz-pyrzyk avatar amadeusw avatar lahma avatar ppanyukov avatar roji avatar mtschneiders avatar alexandrnikitin avatar cdmihai avatar mfilippov avatar krk avatar stevedesmond-ca avatar ipjohnson avatar factormystic avatar vkkoshelev avatar smitpatel avatar goldshtn avatar russcam avatar richlinnell avatar pentp avatar nn--- avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.