この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 33025|答える: 2

[通信] .NET/C#はBenchmarkDotNetを使ってコードのパフォーマンスをテストします

[リンクをコピー]
掲載地 2021/03/03 15:51:12 | | | |
要件:開発プロセスでは、同じ2つの関数メソッドで要件を満たすことができますが、パフォーマンス上の理由から最適なパフォーマンスメソッドを呼び出します。コードのパフォーマンスはどうテストするか?

パフォーマンスベンチマーキングは、プログラマーが2つのコードスニペットやメソッドのパフォーマンスを比較するのに役立ち、コードの書き換えやリファクタリングの優れた定量基準となります。 パフォーマンスベンチマークがなければ、方法Aを方法Bに切り替えたときの性能の違いを肉眼で判断するのは難しいです。

BenchmarkDotNetは公式ウェブサイトにある強力な.Netパフォーマンスベンチマークライブラリですハイパーリンクのログインが見えます。

まず、新しい.NET Core 3.1コンソールプロジェクトを作成します。 プロジェクト名は:BenchmarkTest

nugetコマンドを使ってBenchmarkDotNetをインストールしてください。コードは以下の通りです:


プロジェクトのターゲットプラットフォームを変更するには、プロジェクトをダブルクリックしてください。


それぞれ.NET Framework 4.7.2および.NET Core 3.1フレームワークの下でTestMD5およびTestSHA1メソッドのパフォーマンスをテストします。

コードは以下の通りです:


以下のエラーで実行を試みてください:

ベンチマークの検証:
ベンチマークを定義するアセンブリ・ベンチマークテストは最適化されていません
ベンチマークは最適化が有効化されていない状態で構築され(おそらくDEBUG構成でした)。 ぜひリリースでビルドしてください。
ベンチマークのデバッグをご希望の場合は、こちらをご覧ください。ハイパーリンクのログインが見えます。

プロジェクトをリリースモードに切り替えてください以下のようにプロジェクトを再開するには:


* 概要 *

BenchmarkDotNet=v0.12.1, OS=Windows 10.0.18363.1379 (1909/November2018Update/19H2)
Intel Core i5-8259U CPU 2.30GHz(Coffee Lake)、1 CPU、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


|   方法 |           仕事 |       ランタイム |     意地悪 |     エラー |    StdDev |      ミン |      マックス |   中央値 |
|--------- |-------------- |-------------- |---------:|----------:|----------:|---------:|---------:|---------:|
|  TestMD5 |    .NET 4.7.2 |    .NET 4.7.2 | 4.119アメリカ | 0.0804 アメリカ | 0.1045 US | 3.958アメリカ | 4.318アメリカ | 4.123アメリカ |
| テストSHA1 |    .NET 4.7.2 |    .NET 4.7.2 | 4.043アメリカ | 0.0793 アメリカ | 0.1085 アメリカ | 3.926米 | 4.289アメリカ | 4.003アメリカ |
|  TestMD5 | .NET Core 3.1 | .NET Core 3.1 | 1.216アメリカ | 0.0122 アメリカ | 0.0114 アメリカ | 1.202 アメリカ | 1.238アメリカ | 1.214 アメリカ |
| TestSHA1 | .NET Core 3.1 | .NET Core 3.1 | 1.307アメリカ | 0.0186 アメリカ | 0.0165 US | 1.284 US | 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秒)

***** ベンチマークランナー:終了*****
** 実行すべきベンチマークが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ソリューション
次に:C# WebサービスサーバーへのJava呼び出しはHTTPヘッダーSOAPActionの値を認識しません
 地主| 掲載地 2022/03/31 15:56:47 |
1. 平均訳:平均は通常算術平均、または幾何平均を指します。

ナラティブ:一連の列の値を合計し、合計数(平均値)で割ります。

2. 中央値換算:中間値。

ナラティブ:一連の列を昇順に並べ、中間の値、つまり中間の値を取る。
 地主| 掲載地 2023/05/25 20:13:33 |
.NET/C#はSpanを使って高パフォーマンスで文字列を処理しています
https://www.itsvse.com/thread-10596-1-1.html
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com