Table of Contents

Benchmark Results

This directory contains benchmark results generated by BenchmarkDotNet.

File Structure

File Description
machine-spec.md Machine specification (extracted from benchmarks)
asynclock-single.md Single lock acquire/release performance
asynclock-multiple.md Multiple concurrent lock operations
asyncautoresetevent-set.md Set operation performance
asyncautoresetevent-setthenw.md Set then wait pattern
asyncautoresetevent-waitthenset.md Wait then set pattern
asyncmanualresetevent-setreset.md Set/Reset cycle performance
asyncmanualresetevent-setthenw.md Set then wait pattern
asyncmanualresetevent-waitthenset.md Wait then set pattern
asyncsemaphore-single.md Single semaphore wait/release
asynccountdownevent-signal.md Signal operation performance
asyncbarrier-signalandwait.md Barrier synchronization
asyncreaderwriterlock-reader.md Reader lock performance
asyncreaderwriterlock-writer.md Writer lock performance

Updating Benchmark Results

To update benchmark results after a local run:

  1. Run the benchmarks using the test project:

    cd tests\Threading
    dotnet run -c Release -- --filter "*Benchmark*"
    
  2. Execute the update script from the repository root:

    scripts\update-benchmark-docs.cmd
    

    Or on PowerShell:

    .\scripts\update-benchmark-docs.ps1
    

The script:

  • Copies the latest benchmark markdown files from tests/Threading/BenchmarkDotNet.Artifacts/results/
  • Extracts machine specification from the first benchmark file to machine-spec.md
  • Strips the machine specification from individual benchmark files (keeps only result tables)
  • Uses simplified filenames for the documentation

Important Notes

  • Benchmarks should be run on a local machine with minimal background load
  • Results are machine-specific and may vary between systems
  • The benchmark files are included in the main benchmarks.md via docfx [!INCLUDE] directives
  • Machine specification is stored once in machine-spec.md and included at the top of the benchmarks page
  • Individual benchmark files contain only the results table for cleaner includes