私はいくつかの .net フレームワークのベンチマークを行っています。.net フレームワーク、C#、およびBenchmarkDotNetを使用しています。
私がやりたいことは次のとおりです。私は多くのベンチマーク テストを書いていますが、レポートの概要セクションだけに関心があります。テストの概要セクションのみを表示するように BenchmarkDotNet を構成するにはどうすればよいですか?
より明確にするためのスクリーンショットを次に示します。
私はいくつかの .net フレームワークのベンチマークを行っています。.net フレームワーク、C#、およびBenchmarkDotNetを使用しています。
私がやりたいことは次のとおりです。私は多くのベンチマーク テストを書いていますが、レポートの概要セクションだけに関心があります。テストの概要セクションのみを表示するように BenchmarkDotNet を構成するにはどうすればよいですか?
より明確にするためのスクリーンショットを次に示します。
なぜログをスキップしたいのですか? ログを無効にすると、しばらく黒い画面が表示されます。何かがうまくいかない場合、あなたはそれについて知りません。
ただし、回避策があります。BenchmarkDotNet は、カスタマイズのために特別な構成を使用します。Loggers
これらの構成の一部です。構成を指定しない場合、デフォルトの構成がそれを使用します。簡単に拡張できますが、デフォルト構成の一部を無効にするための優れた API はありません (うまくいけば、すぐに追加されます。対応する API は現在議論段階にあります)。したがって、独自の構成を定義し、ロガーを除くデフォルト構成のすべての部分を追加して、それを に渡す必要がありBenchmarkRunner
ます。その後、ConsoleLogger
は使用されません。その後、要約表と結論を手動でコンソールに出力する必要があります。また、完全なログとマークダウン形式の要約テーブルがBenchmarkDotNet.Artifacts
フォルダーに配置されます。
ソースコード:
var config = new ManualConfig();
config.Add(DefaultConfig.Instance.GetColumnProviders().ToArray());
config.Add(DefaultConfig.Instance.GetExporters().ToArray());
config.Add(DefaultConfig.Instance.GetDiagnosers().ToArray());
config.Add(DefaultConfig.Instance.GetAnalysers().ToArray());
config.Add(DefaultConfig.Instance.GetJobs().ToArray());
config.Add(DefaultConfig.Instance.GetValidators().ToArray());
config.UnionRule = ConfigUnionRule.AlwaysUseGlobal; // Overriding the default
var summary = BenchmarkRunner.Run<TestBench>(config);
var logger = ConsoleLogger.Default;
MarkdownExporter.Console.ExportToLog(summary, logger);
ConclusionHelper.Print(logger, config.GetCompositeAnalyser().Analyse(summary).ToList());