問題タブ [benchmarkdotnet]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
39 参照

c# - 実行ごとにビルドせずに BenchmarkDotNet でベンチマークを実行するにはどうすればよいですか

ベンチマークを定義しました

プログラム Main でベンチマークを実行します

プログラムを実行するたびに、プログラムが再びビルドされます (さまざまなランタイムで実行するスーパークール機能には興味がありません)。現在のベンチマーク プログラムを既に実行しているランタイムでベンチマークを実行したいという単純なケースで、これらのビルドを回避するにはどうすればよいですか?

0 投票する
1 に答える
20 参照

benchmarkdotnet - BenchmarkDotnet エクスポーターのパスを変更する

ドキュメントには、「デフォルトで」エクスポーターが.\BenchmarkDotNet.Artifacts\resultsパスにレポートを作成すると書かれています。

このパスをオーバーライドする方法はありますか?

0 投票する
1 に答える
194 参照

c# - BenchmarkDotNet で CPU 使用率を測定するには?

私は DotNet Benchmark を使用しており、次の表のようにメモリ使用量の情報を取得できます。しかし、実行したプロセスでのCPU 使用率にアクセスする必要があります。DotNetBenchmark にはこの機能がありますか? そうでない場合、どの方法を使用すればよいですか?

方法 平均 エラー 標準偏差 ジェネレーション0 第1世代 第2世代 割り当て済み
Get10000Records 38.70ミリ秒 1.413ミリ秒 4.165ミリ秒 2000.0000 1000.0000 - 12MB
Get100000Records 558.30 ミリ秒 11.157ミリ秒 22.024ミリ秒 19000.0000 6000.0000 2000.0000 121メガバイト
0 投票する
2 に答える
158 参照

c# - #if NET6_0_OR_GREATER を使用して BenchmarkDotNet の実行からベンチマーク メソッドを除外することは可能ですか?

BenchmarkDotNet で使用する、net48およびのマルチターゲットのベンチマークを作成net6.0していて、それらのベンチマークの 1 つがターゲットに対してのみコンパイルできるとしnet6.0ます。

当然行うべきことは、次のようなものを使用して、特定のベンチマークをnet48ビルドから除外することです。

残念ながら、これは機能しません。機能しない方法はTargetFrameworks、プロジェクト ファイルのプロパティで指定されたターゲットの順序によって異なります。

net6.0それが最初になるようにフレームワークを注文すると<TargetFrameworks>net6.0;net48</TargetFrameworks>(上記の例で)、UsingSpan()メソッドは両方のターゲットに含まれ、ターゲットの BenchmarkDotNet ビルド エラーが発生し、次のnet48ように出力されます。

一方、フレームワークをnet48最初に並べると<TargetFrameworks>net48;net6.0</TargetFrameworks>(上記の例)、UsingSpan()メソッドは両方のターゲットに対して除外され、次のような出力が得られます。

この問題を解決するには、プロジェクトを単一ターゲットにし、プロジェクト ファイルを編集してフレームワークを個別にターゲットにし、ターゲットごとにベンチマークを個別に実行する必要があります。

マルチターゲット プロジェクトでこれを機能させる方法はありますか?


完全を期すために、問題を示す完全にコンパイル可能なテスト アプリを次に示します。Visual Studio 2022 を使用しています。

プロジェクト ファイル:

"Program.cs" ファイル: