Показать только сводную секцию BenchmarkDotNet

Я тестирую некоторые вещи.net Framework, я использую.net Framework, C# и BenchmarkDotNet

Что я хочу сделать, это; Я пишу много тестов и интересуюсь только краткими разделами отчетов. Как настроить BenchmarkDotNet для отображения только сводного раздела тестов?

Вот скриншот, чтобы быть более понятным;

1 ответ

Решение

Почему вы хотите пропустить журналы? Тесты могут занять много времени, если вы отключите журналы, вы будете некоторое время смотреть на черный экран. Если что-то пойдет не так, то вы об этом не узнаете.

Тем не менее, есть обходной путь. 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());

Ответчик AndreyAkinshin действительно отличный, но одна часть уже не актуальна!ManualConfig больше не предоставляет .GetCompositeAnalyser(), поэтому вам нужно получить ImmutableConfig, и это возможно только для формирования BenchmarksCase

Например, если вы используете только один Benchmarkcase: вы можете сделать это с помощью...First()

это исправило это для меня

ConclusionHelper.Print(logger, summary.BenchmarksCases.**First()**.Config.GetCompositeAnalyser().Analyse(summary).ToList());
Другие вопросы по тегам