Repolode
dotnet

dotnet/BenchmarkDotNet

Библиотека .NET для превращения методов C# в воспроизводимые бенчмарки с автоматическим прогревом, статистикой и отчетами о результатах.

Звёзды
11,526
Форки
1,080
Открытые issues
168
Последний коммит
11 часов назад

Что это?

BenchmarkDotNet позволяет превращать обычные методы в бенчмарки с помощью атрибутов — так же, как при написании unit-тестов. Библиотека берет на себя задачи, которые легко выполнить неправильно вручную: пробные запуски, прогрев и измерительные итерации, защиту от устранения мертвого кода, а также проверку окружения с предупреждениями о подключенном отладчике, сборке DEBUG или виртуализированном хосте.

Бенчмаркам можно задавать параметры с помощью [Params], сравнивать их с базовым вариантом и запускать в разных средах выполнения, например .NET Framework, .NET Core, .NET 5+, Mono и NativeAOT. Результаты выводятся в виде сводной таблицы со статистикой, например Mean, Error и StdDev, и экспортируются в Markdown, HTML, CSV, XML, JSON и графики. Также поддерживаются диагностика памяти и листинги дизассемблированного кода.

BenchmarkDotNet работает в Windows, Linux и macOS, поддерживает C#, F# и Visual Basic. Среди поддерживаемых архитектур указаны x86, x64, ARM, ARM64, Wasm и LoongArch64.

Ключевые возможности

  • 01Превращайте методы в бенчмарки с помощью атрибутов, например [Benchmark] и [Params].
  • 02Автоматически выполняет пробные запуски и прогрев, а также определяет количество итераций на основе статистики.
  • 03Сравнивайте бенчмарки с базовым вариантом и запускайте их в разных средах выполнения .NET.
  • 04Экспортируйте результаты в Markdown, HTML, CSV, JSON и графики.
  • 05Измеряйте выделение управляемой и нативной памяти и просматривайте листинги дизассемблированного кода.

Сценарии использования

  • Проверить, действительно ли изменение кода на горячем пути .NET-сервиса повышает производительность.
  • Сравнить альтернативные алгоритмы или API библиотек, например функции хеширования, в разных средах выполнения.
  • Проверить регрессии производительности между версиями .NET или в сборках NativeAOT.
  • Делиться с коллегами воспроизводимыми экспериментами производительности в стандартном формате отчета.

Быстрый старт

  1. 1

    Создайте консольное приложение .NET и добавьте пакет NuGet BenchmarkDotNet

  2. 2

    Пометьте методы в классе атрибутом [Benchmark] и запустите бенчмарки из точки входа консольного приложения

Что важно знать

  • Бенчмарки необходимо запускать из консольного приложения; другие типы приложений не поддерживаются.
  • BenchmarkDotNet не заменяет знания о грамотном проектировании бенчмарков, а результаты по-прежнему нужно тщательно интерпретировать.

Темы

Частые вопросы

Что такое BenchmarkDotNet?
Библиотека .NET для превращения методов C# в воспроизводимые бенчмарки с автоматическим прогревом, статистикой и отчетами о результатах. BenchmarkDotNet позволяет превращать обычные методы в бенчмарки с помощью атрибутов — так же, как при написании unit-тестов. Библиотека берет на себя задачи, которые легко выполнить неправильно вручную: пробные запуски, прогрев и измерительные итерации, защиту от устранения мертвого кода, а также проверку окружения с предупреждениями о подключенном отладчике, сборке DEBUG или виртуализированном хосте.
BenchmarkDotNet можно использовать бесплатно? Какая у него лицензия?
BenchmarkDotNet распространяется с открытым исходным кодом под лицензией MIT. Перед использованием в коммерческих продуктах проверьте условия лицензии.
BenchmarkDotNet всё ещё поддерживается?
Активно поддерживается. Последний коммит в BenchmarkDotNet — 6 нояб. 2026 г..
Для чего можно использовать BenchmarkDotNet?
Проверить, действительно ли изменение кода на горячем пути .NET-сервиса повышает производительность. Сравнить альтернативные алгоритмы или API библиотек, например функции хеширования, в разных средах выполнения. Проверить регрессии производительности между версиями .NET или в сборках NativeAOT. Делиться с коллегами воспроизводимыми экспериментами производительности в стандартном формате отчета.
Как установить BenchmarkDotNet?
Создайте консольное приложение .NET и добавьте пакет NuGet BenchmarkDotNet Пометьте методы в классе атрибутом [Benchmark] и запустите бенчмарки из точки входа консольного приложения
Где скачать BenchmarkDotNet?
Исходный код и инструкции по установке — на GitHub: https://github.com/dotnet/BenchmarkDotNet

Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.

Похожие проекты

Инструмент для бенчмаркинга на Python, который отслеживает производительность пакета между коммитами и публикует результаты в виде статического веб-отчёта.

1 тыс.216PythonBSD-3-ClauseАктивно поддерживаетсяОбновлён 4 дня назад