2010-05-18 6 views
1

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

Несколько лет назад кто-то (я думаю, Heinz Kabutz?) Отметил, что каждый бенчмарк, который стоит времени, чтобы посмотреть на его результаты, должен выполняться как минимум несколько минут и должен выполняться как минимум 3 раза, тогда как первый запуск всегда отбрасывается. Это должно было учитывать разминку JVM, а также несоответствия в среде (фоновые процессы, сетевой трафик и т. Д.) И погрешности измерения. Это имело смысл для меня, и мой личный опыт подсказывал что-то подобное, поэтому я всегда принимал эту стратегию.

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

ответ

0

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

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

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

Смежные вопросы