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

Вид: 33025|Ответ: 2

[Связь] .NET/C# использует BenchmarkDotNet для тестирования производительности кода

[Скопировать ссылку]
Опубликовано 03.03.2021 15:51:12 | | | |
Требования: В процессе разработки одни и те же два функциональных метода могут соответствовать нашим требованиям, но по соображениям производительности мы выбираем лучший метод для вызова, как проверить производительность кода?

Бенчмаркинг производительности помогает программистам сравнивать производительность двух фрагментов или методов кода, что может дать хороший стандарт количественной оценки при переписывании или рефакторинге кода. Без бенчмарков производительности трудно представить, как можно заметить разницу невооружённым глазом, когда меняешь метод А на метод Б.

BenchmarkDotNet — это мощная библиотека бенчмарков производительности на формате .Net на официальном сайтеВход по гиперссылке виден.

Сначала мы создадим новый консольный проект для .NET Core 3.1. Название проекта: BenchmarkTest

Установите BenchmarkDotNet с помощью команды nuget, код выглядит следующим образом:


Дважды кликайте по проекту, чтобы изменить целевой платформу проекта, следующим образом:


Мы проверяем производительность методов TestMD5 и TestSHA1 в рамках фреймворков .NET Framework 4.7.2 и .NET Core 3.1 соответственно.

Код таков:


Попробуйте выполнить её со следующей ошибкой:

Проверка бенчмарков:
Assembly BenchmarkTest, определяющий бенчмарки, не оптимизирован
Benchmark был создан без включённой оптимизации (скорее всего, это была DEBUG-конфигурация). Пожалуйста, сделайте это в RELEASE.
Если хотите отладить бенчмарки, пожалуйста, посмотритеВход по гиперссылке виден.

Переключите проект в режим RELEASEЧтобы начать проект заново, как показано ниже:


* Краткое содержание *

BenchmarkDotNet=v0.12.1, OS=Windows 10.0.18363.1379 (1909/ноябрь 2018Update/19H2)
Процессор Intel Core i5-8259U 2,30 ГГц (Coffee Lake), 1 процессор, 8 логических и 4 физических ядра
.NET Core SDK=5.0.103
  [Хост]: .NET Core 3.1.12 (CoreCLR 4.700.21.6504, CoreFX 4.700.21.6905), X64 RyuJIT
  .NET 4.7.2 : .NET Framework 4.8 (4.8.4300.0), X64 RyuJIT
  .NET Core 3.1 : .NET Core 3.1.12 (CoreCLR 4.700.21.6504, CoreFX 4.700.21.6905), X64 RyuJIT


|   Метод |           Работа |       Время выполнения |     Mean |     Ошибка |    StdDev |      Мин |      Макс |   Медиана |
|--------- |-------------- |-------------- |---------:|----------:|----------:|---------:|---------:|---------:|
|  TestMD5 |    .NET 4.7.2 |    .NET 4.7.2 | 4.119 США | 0.0804 US | 0.1045 us | 3.958 США | 4.318 США | 4.123 США |
| TestSHA1 |    .NET 4.7.2 |    .NET 4.7.2 | 4.043 США | 0.0793 США | 0.1085 US | 3.926 США | 4.289 США | 4.003 США |
|  TestMD5 | .NET Core 3.1 | .NET Core 3.1 | 1.216 США | 0.0122 us | 0,0114 США | 1.202 США | 1.238 США | 1.214 США |
| TestSHA1 | .NET Core 3.1 | .NET Core 3.1 | 1.307 США | 0.0186 us | 0.0165 us | 1.284 США | 1.336 США | 1.307 США |

* Подсказки *
Исключения
  TestContext.TestSHA1: .NET 4.7.2 -> 1 исключение было удалено (5.52 us)
  TestContext.TestSHA1: Исключение .NET Core 3.1 -> 1 было удалено (1.37 us)

* Легенды *
  Среднее : Арифметическое среднее всех измерений
  Ошибка: Половина доверительного интервала 99,9%
  StdDev: Стандартное отклонение всех измерений
  Минимум : минимум
  Макс: Максимум
  Медиана: Значение, разделяющее верхнюю половину всех измерений (50-й перцентиль)
  1 us : 1 микросекунда (0,000001 сек)

***** BenchmarkRunner: Конец *****
** Осталось 0 эталонов для запуска **
Время выполнения: 00:01:14 (74 сек), выполненные бенчмарки: 4

Общее время по всему миру: 00:01:20 (80,63 сек), выполненные бенчмарки: 4
* Очистка артефактов *
После выполнения результаты тестов сохраняются в папке нашего проекта \BenchmarkTest\bin\Release\netcoreapp3.1\BenchmarkDotNet.Artifacts\results в форматах csv, html, md и других форматах.



Заметка:Выбор целевого кадра SimpleJob некорректен и может выполняться неправильно.Следующим образом:

Не удалось собрать в параллельном режиме, перешёл на последовательную сборку


Ресурсы:Вход по гиперссылке виден.




Предыдущий:Решение Beyond Compare для ошибки «Этот ключ авторизации отозван»
Следующий:Java-вызовы веб-сервиса C# не распознают значение HTTP-заголовка SOAPAction
 Хозяин| Опубликовано 31.03.2022 15:56:47 |
1. Перевод среднего: среднее обычно относится к арифметическому усредненному или геометрическому среднему.

Нарратив: Сложите все значения в наборе последовательностей и делите на общее число, которое является средним числом.

2. Медианный перевод: промежуточное значение.

Нарратив: Расположите набор последовательностей в порядке возрастания, а затем возьмите среднее значение, которое является средним значением.
 Хозяин| Опубликовано 25.05.2023 20:13:33 |
.NET/C# использует Span для обработки строк с высокой производительностью
https://www.itsvse.com/thread-10596-1-1.html
Отказ:
Всё программное обеспечение, программные материалы или статьи, публикуемые Code Farmer Network, предназначены исключительно для учебных и исследовательских целей; Вышеуказанный контент не должен использоваться в коммерческих или незаконных целях, иначе пользователи несут все последствия. Информация на этом сайте взята из Интернета, и споры по авторским правам не имеют отношения к этому сайту. Вы должны полностью удалить вышеуказанный контент с компьютера в течение 24 часов после загрузки. Если вам нравится программа, пожалуйста, поддержите подлинное программное обеспечение, купите регистрацию и получите лучшие подлинные услуги. Если есть нарушение, пожалуйста, свяжитесь с нами по электронной почте.

Mail To:help@itsvse.com