awesome-repositories.com
Blog
awesome-repositories.com

Discover the best open-source repositories with AI-powered search.

ExploreCurated searchesOpen-source alternativesSelf-hosted softwareBlogSitemap
ProjectAboutHow we rankPressMCP server
LegalPrivacyTerms
© 2026 Bringes Technology SRL·VAT RO45896025·hello@awesome-repositories.com
·
dotnet avatar

dotnet/BenchmarkDotNet

0
View on GitHub↗
11,428 stars·1,052 forks·C#·MIT·4 viewsbenchmarkdotnet.org↗

BenchmarkDotNet

BenchmarkDotNet is a library and tool suite for measuring the execution time and memory allocation of .NET code. It utilizes statistical sampling and warm-up iterations to determine the stability and precise execution speed of specific methods.

The project provides a JIT disassembly viewer to inspect processor disassembly and analyze how the compiler executes code paths. It includes a memory allocation profiler that tracks managed and native memory traffic to identify efficiency bottlenecks. Additionally, a runtime performance comparator allows the same benchmarks to be executed across different .NET runtimes and configurations to identify environment variances.

The toolset covers performance analysis through the generation of summary reports and the tracking of statistical outliers against established baselines. It also includes reliability verification to detect attached debuggers or non-optimized builds that could invalidate measurement results.

Features

  • Performance Benchmarks - Provides a comprehensive framework for measuring and tracking the execution performance of .NET code.
  • Disassemblers - Provides a tool that prints processor disassembly listings to analyze JIT compiler execution paths.
  • Interactive Disassembly Environments - Provides disassembly listings for benchmarks to analyze how the processor compiles and executes the underlying code.
  • Performance Benchmarking - Executes method invocations using warm-up iterations and statistical sampling to determine precise execution time.
  • Memory Allocation Tracers - Tracks managed and native memory allocations during execution to identify efficiency bottlenecks.
  • JIT Disassembly Analyzers - Integrates with the runtime to extract and display the low-level machine code generated by the just-in-time compiler.
  • Cross-Runtime Execution Hosts - Provides a host that spawns separate process instances for different .NET runtime versions to compare performance.
  • Memory Usage Analysis - Tracks managed and native memory allocations during execution to identify efficiency bottlenecks in the memory lifecycle.
  • Memory Profilers - Tracks managed and native memory traffic to identify bottlenecks in the memory lifecycle.
  • Comparative Benchmarking Utilities - Runs identical benchmarks across different .NET runtimes to evaluate variances against a baseline.
  • .NET Benchmarking Libraries - Provides a library for measuring execution time and memory allocation of .NET code using statistical sampling.
  • Runtime Performance Benchmarking - Tests the same code across different .NET runtimes and configurations to identify performance variances.
  • Statistical Sampling Benchmarks - Executes method invocations repeatedly using warm-up iterations to gather a statistical distribution of execution times.
  • Performance Regression Analyzers - Compares current execution results against established baselines to detect statistical outliers and performance drops.
  • Isolating Project Generators - Creates standalone temporary projects and binaries to isolate benchmarks and ensure accurate compiler optimizations.
  • Performance Analysis Tools - Generates summary reports and identifies statistical outliers to analyze application performance.
  • Low-Level Machine Code Optimizations - Analyzes processor disassembly and machine code to understand how the compiler optimizes specific execution paths.
  • Benchmark Reliability Verifiers - Detects environment issues like attached debuggers or non-optimized builds that could invalidate performance measurements.
  • Performance Reporting - Generates summary tables and visual plots to identify statistical outliers and compare results against a baseline.
  • Benchmark Environment Validators - Detects attached debuggers or non-optimized build configurations that could invalidate performance measurement results.
  • Code Analysis and Metrics - Benchmarking library for performance measurement.
  • Core .NET Libraries - Advanced library for measuring and analyzing code performance.

Star history

Star history chart for dotnet/benchmarkdotnetStar history chart for dotnet/benchmarkdotnet

AI search

Explore more awesome repositories

Describe what you need in plain English — the AI ranks thousands of curated open-source projects by relevance.

Start searching with AI

Open-source alternatives to BenchmarkDotNet

Similar open-source projects, ranked by how many features they share with BenchmarkDotNet.
  • kde/heaptrackKDE avatar

    KDE/heaptrack

    4,107View on GitHub↗

    Heaptrack is a heap memory profiler and diagnostic tool for applications running on Linux. It functions as a memory leak detector and performance analysis system that records heap allocations and stack traces to identify memory hotspots and consumption patterns. The project provides a graphical heap allocation visualizer for exploring memory usage through tree views and peak memory reports. It utilizes flame graphs and allocation charts to visualize memory hotspots and assist in the detection of leaks. The toolset includes capabilities for heap memory allocation tracing and the generation of

    C++
    View on GitHub↗4,107
  • bloomberg/memraybloomberg avatar

    bloomberg/memray

    14,885View on GitHub↗

    Memray is a memory profiler for Python that tracks heap allocations in both Python code and native C or C++ extensions. It captures memory events by hooking into the language runtime and traversing call stacks, providing a comprehensive view of how an application consumes memory. The tool is designed to minimize performance impact on the target application by using thread-local buffering and streaming data to an external process or file. The project distinguishes itself through its ability to monitor complex, multi-threaded systems and child processes in real-time. It provides diagnostic util

    Pythonhacktoberfestmemorymemory-leak
    View on GitHub↗14,885
  • sharkdp/hyperfinesharkdp avatar

    sharkdp/hyperfine

    28,316View on GitHub↗

    Hyperfine is a command-line benchmarking tool used to measure the execution time of shell commands through multiple runs and statistical analysis. It functions as a comparative benchmarking utility and a shell performance analyzer, allowing for the evaluation of multiple commands against a reference baseline to determine relative speed. The tool distinguishes itself by isolating actual command performance through shell overhead correction and the ability to bypass the shell entirely using system calls. It supports parameterized execution, enabling benchmarks to run across a range of varying i

    Rust
    View on GitHub↗28,316
  • async-profiler/async-profilerasync-profiler avatar

    async-profiler/async-profiler

    8,871View on GitHub↗

    Async-profiler is a sampling profiler for Java applications that tracks CPU time and stack traces across execution frames to identify performance bottlenecks. It is designed to capture profiling data without introducing timing bias. The project provides capabilities for JVM memory analysis to locate native and heap allocation hotspots and memory leaks. It also includes system contention analysis to identify resource bottlenecks through the tracking of contended locks and hardware performance counters. The tool converts raw profiling data into visual performance reports, including interactive

    C++
    View on GitHub↗8,871
See all 30 alternatives to BenchmarkDotNet→

Frequently asked questions

What does dotnet/benchmarkdotnet do?

BenchmarkDotNet is a library and tool suite for measuring the execution time and memory allocation of .NET code. It utilizes statistical sampling and warm-up iterations to determine the stability and precise execution speed of specific methods.

What are the main features of dotnet/benchmarkdotnet?

The main features of dotnet/benchmarkdotnet are: Performance Benchmarks, Disassemblers, Interactive Disassembly Environments, Performance Benchmarking, Memory Allocation Tracers, JIT Disassembly Analyzers, Cross-Runtime Execution Hosts, Memory Usage Analysis.

What are some open-source alternatives to dotnet/benchmarkdotnet?

Open-source alternatives to dotnet/benchmarkdotnet include: kde/heaptrack — Heaptrack is a heap memory profiler and diagnostic tool for applications running on Linux. It functions as a memory… bloomberg/memray — Memray is a memory profiler for Python that tracks heap allocations in both Python code and native C or C++… sharkdp/hyperfine — Hyperfine is a command-line benchmarking tool used to measure the execution time of shell commands through multiple… async-profiler/async-profiler — Async-profiler is a sampling profiler for Java applications that tracks CPU time and stack traces across execution… bheisler/criterion.rs — Criterion is a statistics-driven microbenchmarking library and performance regression tool for Rust. It provides a… samsaffron/memory_profiler — Memory Profiler is a diagnostic library for Ruby applications designed to monitor runtime memory consumption and…