Возможен ли воспроизводимый сравнительный анализ?
Мне нужно протестировать некоторые каркасы узлов или, по крайней мере, их часть маршрутизации. Это означает, что запрос поступает в процесс узла для обработки до тех пор, пока не будет определен маршрут и не будет вызвана функция / класс с бизнес-логикой, например, непосредственно перед вызовом. Я смотрел долго и трудно для подходящего подхода, но пришел к выводу, что это должно быть сделано непосредственно в коде, а не с помощью внешнего инструмента бенчмарка. Я боюсь измерять неправильные атрибуты. Я пробовал артиллерию и ab, но они измеряют намного больше атрибутов, чем я хочу измерять, таких как RTT, плохое планирование ОС, случайные задачи, выполняемые в ОС и так далее. Мои начальные тесты для моего пользовательского кода маршрутизации с использованием process.hrtime() показывают прибл. Время выполнения 0,220 мс (220 мкс), но внешняя мера показывает 0,700 (700 мкс), что не является приемлемой разницей, так как это дополнительное время составляет 3,18 раза. Иногда время выполнения увеличивается до 1.x секунд из-за GC или системных задач. Теперь мне интересно, как будет выглядеть воспроизводимый подход? Может быть так:
- Используйте Docker с Scientific Linux, чтобы получить несколько контролируемую среду.
- Минимальная установка Docker-контейнера, только контейнер с включенным узлом, без дополнений.
- Сохранение времени приводит к глобальной области видимости до завершения теста, а затем сохраняется на диск.
- Завершите работу всех приложений с высоким / умеренным уровнем дискового ввода-вывода и / или ЦП на хост-ОС
- Измерьте время, как описано выше, и скрестите пальцы.
Любые другие рекомендации, чтобы принять во внимание?