Как долго должен работать микробенчмарк? - PullRequest
1 голос
/ 18 мая 2010

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

Несколько лет назад кто-то (я думаю, Хайнц Кабуц?) Заметил, что каждый тест, который стоит времени, чтобы взглянуть на его результаты, должен выполняться, по крайней мере, несколько минут и должен выполняться, по крайней мере, 3 раза, тогда как Первый запуск всегда отбрасывается. Это должно было объяснить прогрев JVM, а также несоответствия в среде (фоновые процессы, сетевой трафик, ...) и неточности измерений. Это имело смысл для меня, и мой личный опыт подсказывал нечто подобное, поэтому я всегда придерживался этой стратегии.

Однако я заметил, что многие люди (например, Джефф ) пишут тесты производительности, которые выполняются всего за пару миллисекунд (!) И запускаются только один раз. Я знаю, что точность краткосрочных тестов возросла в последние годы, но это все равно кажется мне странным. Разве не каждый микробенчмарк должен работать хотя бы секунду и запускаться как минимум 3 раза, чтобы получить несколько полезный результат? Или это правило устарело в наши дни?

1 Ответ

0 голосов
/ 18 мая 2010

По моему опыту вам нужно:

  • запустить несколько раз (и отбросить первый результат - ВМ и другие эффекты)
  • займет минимум времени, если вы смотрите на код с интенсивным использованием вычислительных ресурсов
  • работает достаточно долго, чтобы уменьшить стоимость циклов и функций синхронизации
  • в идеале работает в течение одного временного интервала ОС (обычно 10 мс) или для более чем одного временного интервала, например, работать в течение ~ 5 мсек или ~ 500 мсек.

Я склонен работать только с интенсивным вычислительным кодом - если у вас другой профиль (например, интенсивный объем памяти или много операций ввода-вывода), тогда может потребоваться другая стратегия синхронизации

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...