Как мне интерпретировать вывод `грузовой скамьи`?

Я сравнил свой проект Rust с cargo bench и увидеть много цифр на результатах... Что они значат?

2 tests
test bench_few_core ... bench:  26,249,920 ns/iter (+/- 2,836,381)
test bench_one_core ... bench:   6,087,923 ns/iter (+/- 752,064)

Например для test bench_few_core, Я вижу:

  • номер 1 = 26
  • номер 2 = 249
  • номер 3 = 920
  • номер 4 = 2
  • номер 5 = 836
  • номер 6 = 381

Что они все значат?

Я думал, что должно быть 2 числа на тест: математическое ожидание (или среднее значение) и стандартное отклонение.

2 ответа

Решение

Ваш пример показывает два числа, которые вы ожидаете для теста: медиана и общее отклонение (т.е. max-min) в наносекундах за итерацию.

Обратите внимание, что для больших чисел обычной практикой в ​​английском языке США является написание цифр группами по 3, разделенными запятыми. Например, 26249920 часто пишется 26,249,920.

Числа представляют собой среднее значение и разницу между максимальным и минимальным значениями, выраженные с использованием стилей чисел, ориентированных на США (в качестве разделителя тысяч используется запятая).

Для вашего примера:

  • средний: 26249920 нс / ит
  • Макс-мин: 2836381 нс / ит
let median = bs.ns_iter_summ.median as usize;
let deviation = (bs.ns_iter_summ.max - bs.ns_iter_summ.min) as usize;

output.write_fmt(format_args!("{:>11} ns/iter (+/- {})",
                              fmt_thousands_sep(median, ','),
                              fmt_thousands_sep(deviation, ',')))

исходный код

Обратите внимание, что в основе сравнительного анализа лежит различная статистическая работа, наиболее очевидно тот факт, что верхние и нижние 5% выборок усекаются, чтобы уменьшить влияние выбросов.

Другие вопросы по тегам