Сегодня я просматривал несколько блогов о Ruby и Python. Один приверженец Python написал несколько строк кода с циклом, чтобы показать, что Python быстрее, чем Ruby, с аналогичным кодом. Я также нашел блог ученика Ruby, который утверждает, что это неправильно, и он тоже представил пример кода и результаты бенчмаркинга.
Мне интересно, могут ли фоновые программы или фоновые процессы иногда мешать результатам, и мы можем не получить точный сценарий бенчмарка.
Пожалуйста, поправьте меня, если я ошибаюсь.
Обычно просто здравый смысл в получении результатов от нескольких прогонов бенчмаркинга, имея некоторое представление о том, чего ожидать, и зная, какие фоновые службы могут запускаться на вашем компьютере (остерегайтесь, в частности, службы индексирования/поиска) и замедлять его, как правило, избежать серьезного заблуждения по результатам. Я обнаружил, что это скорее проблема с автоматическим тестированием производительности, когда в цикле нет человека, который мог бы сказать: «Что за хрень…? О, глупая служба foo только что запустила обновление».
Для чисто вычислительных тестов я обнаружил, что запуск процесса тестирования с более высоким приоритетом, чем обычно, может с пользой дать более последовательные и стабильные результаты на «занятых» машинах. Это может не сработать, если ввод-вывод является фактором (зависит от того, влияет ли понятие приоритета вашей ОС только на планирование ЦП или ввод-вывод).