Тази статия е огледална статия за машинен превод, моля, кликнете тук, за да преминете към оригиналната статия.

Изглед: 33025|Отговор: 2

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

[Копирай линк]
Публикувано в 3.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/November2018Update/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 САЩ | 0.1085 US | 3.926 САЩ | 4.289 САЩ | 4.003 САЩ |
|  TestMD5 | .NET Core 3.1 | .NET Core 3.1 | 1.216 САЩ | 0.0122 САЩ | 0.0114 US | 1.202 САЩ | 1.238 САЩ | 1.214 САЩ |
| TestSHA1 | .NET Core 3.1 | .NET Core 3.1 | 1.307 САЩ | 0.0186 сащ | 0.0165 сащ | 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 е неправилен и може да не се изпълнява правилноКакто следва:

Не успях да сглобя в Parallel, преминавам към последователен билд


Ресурси:Входът към хиперлинк е видим.




Предишен:Отвъд сравнение решение на грешката "Този ключ за авторизация е оттеглен"
Следващ: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