Что означают результаты теста js?
Я использую версию Benchmark JS для узла и не могу найти информацию о том, как прочитать результаты.
Во-первых, есть ли место, где подробно описываются все данные, которые можно извлечь из Benchmark JS?
Во-вторых, в настоящее время я получаю следующий результат в моей консоли:
Test x 2,276,094 ops/sec ±0.84% (190 runs sampled)
Что означают все эти биты информации?
Тест: название моего теста, я знаю, что один
x 2,276,094 ops / sec: я предполагаю, что это среднее число раз, которое код теоретически может выполнить за секунду?
± 0,84%: без понятия
190 выполненных выборок: сколько раз бенчмарк запускал код для получения результата?
1 ответ
Ваш вопрос, вероятно, не является дубликатом, но забавный ответ на него, как указывает GolezTrol в комментарии.
В случае, если этот вопрос удален (крайне маловероятно), вот полный текст ответа John-David Dalton:
Я написал Benchmark.js, который использует jsPerf.
"
ops/sec
"обозначает операции в секунду. То есть, сколько раз тест должен выполнить в секунду.Тест выполняется многократно, пока не достигнет минимального времени, необходимого для получения процентной неопределенности для измерения, меньшей или равной
1%
, Количество итераций будет варьироваться в зависимости от разрешения таймера среды и от того, сколько раз тест может выполняться за минимальное время выполнения. Мы собираем завершенные тестовые прогоны для5
секунд (настраивается) или хотя бы5
выполняется (также настраивается), а затем выполнить статистический анализ выборки. Итак, тест может быть повторен100,000
раз в50 ms
(минимальное время выполнения для большинства сред), а затем повторяется100
раз больше (5
секунд). Больший размер выборки (в этом примере100
), приводит к меньшей погрешности.Мы основываем решение о том, какой тест быстрее, чем просто опс / сек, а также учитываем предел погрешности. Например, тест с меньшим числом операций в секунду, но с более высоким пределом погрешности может быть статистически неотличим от теста с большим числом операций в секунду и меньшим пределом погрешности.
Мы использовали t-тест Уэлча, аналогичный тому, который использует SunSpider, но переключились на непарный t-тест с 2 выборками для равной дисперсии (дисперсия очень мала), потому что у t-теста Уэлча были проблемы при сравнении более низких операций / сек и выше ops / sec с небольшими отклонениями, из- за которых вычисляются степени свободы меньше
1
, Мы также добавляем5.5%
допуск на тесты с аналогичными операциями / сек, потому что тестирование в реальном мире показало, что идентичные тесты могут качаться ~5%
от испытания к повторному испытанию. T-тесты используются для проверки того, что различия между тестами являются статистически значимыми.