Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 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.30GHz (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 US | 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 us | 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 є неправильним і може виконувати їх некоректноНаступним чином:

Не вдалося зібрати в паралельному режимі, перехід на послідовну збірку


Ресурси:Вхід за гіперпосиланням видно.




Попередній:Порівняння Рішення помилки «Цей ключ авторизації відкликано»
Наступний:Виклики 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