Как сравнить инфраструктуру ведения журналов с BenchmarkDotNet?

У нас есть внутренняя структура, которая управляет нашей регистрацией, доступом к данным, шифрованием. Вы называете это. Я хотел бы начать сравнивать производительность, скажем, функциональность ведения журнала с другими основными системами, например, nlog, log4net, serilog. Очевидно, я бы начал с функционально всех систем, таких как регистрация в файл или консоль.

Будет ли BenchmarkDotNet применяться в такой ситуации? В большинстве примеров и статей, которые я читал, указаны сценарии использования в очень узких циклах, и в основном используются операции ввода-вывода, такие как память и процессор, а не диск.

В качестве упражнения я написал тест xunit для тестирования записи в консоль с использованием функциональности Baseline, но тесты так и не были завершены, и я закончил тем, что убил процесс, что привело меня к этой публикации на SO.

Если я использую BenchmarkDotNet неправильный путь, есть ли другой тестовый костюм, который более соответствует тому, что я пытаюсь достичь?

Спасибо Стивен

1 ответ

Решение

BenchmarkDotNet наиболее подходит для микробенчмаркинга кода, связанного с процессором. Существует так много факторов, которые могут повлиять на код, связанный с IO, поэтому я не считаю микробенчмаркинг отличным подходом.

Вместо этого я хотел бы предложить, если это возможно, интегрировать каждую платформу в свое приложение и измерить производительность в максимально реалистичных условиях, включая условие "катастрофического сбоя" или что-то такое, при чем ведение журнала может привести к избиению. Также проведите тестирование с помощью "нулевого логгера", который ничего не делает (и ничего не делает как можно раньше), чтобы вы могли определить своего рода базовый уровень.

Это только скажет вам, как эти каркасы ведения журналов ведут себя для вашего конкретного приложения - но это самая важная вещь, которую вы должны выяснить, я бы предложил.

Другие вопросы по тегам