Бенчмаркинг - это не только получение цифр, но и принятие решений на основе анализа результатов.
На MELPA есть пакет benchstat.el, который вы можете использовать для получения функций, которые предоставляет программа benchstat .
Он реализует сравнительный анализ, основанный на сравнении, в котором сравниваются X
свойства производительности Y
.
Функции Benchstat можно рассматривать как benchmark-run-compiled
оболочку, которая не только собирает информацию, но и возвращает ее в удобном для чтения формате. Оно включает:
- Дельта прошедшего времени между
X
иY
- Среднее среднее время
- Сумма отчислений
Очень простой пример использования:
(require 'benchstat)
;; Decide how much repetitions is needed.
;; This is the same as `benchmark-run-compiled` REPETITIONS argument.
(defconst repetitions 1000000)
;; Collect old code profile.
(benchstat-run :old repetitions (list 1 2))
;; Collect new code profile.
(benchstat-run :new repetitions (cons 1 2))
;; Display the results.
;; Can be run interactively by `M-x benchstat-compare'.
(benchstat-compare)
Результаты benchstat-compare
будут отображаться во временном буфере:
name old time/op new time/op delta
Emacs 44.2ms ± 6% 25.0ms ±15% -43.38% (p=0.000 n=10+10)
name old allocs/op new allocs/op delta
Emacs 23.0 ± 0% 11.4 ± 5% -50.43% (p=0.000 n=10+10)
Тебе понадобится benchstat
двоичный файл программы. Если вы использовали язык программирования Go, скорее всего, он уже есть в вашей системе. В противном случае есть возможность скомпилировать его из исходников.
Предварительно скомпилированный бинарный файл для linux / amd64 можно найти на странице релиза github .