Как работает jsPerf? - PullRequest
       26

Как работает jsPerf?

39 голосов
/ 13 февраля 2011

Сегодня я посетил jsPerf и теперь мне интересно ...

  1. Что такое «ops / sec»?
  2. Сколько итераций это делает?
  3. На каком основании он рассчитывает, что быстрее? Какова формула этих расчетов?

Пример: http://jsperf.com/concatenation-vs-join

Может кто-нибудь сказать мне?

Заранее спасибо.

Ответы [ 2 ]

116 голосов
/ 14 февраля 2011

Я написал Benchmark.js , который jsPerf использует.

  1. "ops/sec" означает количество операций в секунду. Вот сколько раз тест будет выполняться за секунду.

  2. Тест выполняется многократно, пока не достигнет минимального времени, необходимого для получения процентной неопределенности для измерения, меньшего или равного 1%. Количество итераций зависит от разрешения таймера среды и от того, сколько раз тест может выполняться за минимальное время выполнения. Мы собираем выполненные тестовые прогоны в течение 5 секунд (настраивается) или, по крайней мере, 5 выполняется (также настраивается) , а затем выполняем статистический анализ выборки. Таким образом, тест может повторяться 100,000 раза за 50 ms (минимальное время выполнения для большинства сред) , а затем повторяться 100 раз больше (5 секунд) . Больший размер выборки (в данном примере 100) приводит к уменьшению погрешности .

  3. Мы принимаем решение о том, какой тест выполняется быстрее, чем просто операции в секунду, также учитывая погрешность. Например, тест с меньшим числом операций в секунду, но с более высоким пределом погрешности может быть статистически неотличимым из теста с более высоким числом операций в секунду и меньшим пределом погрешности.

    Мы использовали Уэлч-t-тест , аналогичный тому, что SunSpider использует, но переключился на непарный 2-образный t-тест для равной дисперсии (дисперсия очень мала) , поскольку у t-теста Уэлча возникли проблемы при сравнении более низких операций / сек и более высоких операций / сек с небольшими отклонениями, из-за которых степеней свободы были вычислены как меньшие чем 1. Мы также добавляем допуск 5.5% для тестов с аналогичными операциями в секунду, поскольку тестирование в реальных условиях показало, что идентичные тесты могут проходить ~ 5% от теста к повторному тестированию. T-тесты используются для проверки того, что различия между тестами статистически значимы .

5 голосов
/ 14 февраля 2011

Вы можете прочитать Пуленепробиваемые тесты JavaScript статья от авторов.Он использует Benchmark.js btw, который является открытым исходным кодом.

...