Я думаю, вы неправильно понимаете стандартное отклонение - если вы запустите свой тест 50 раз и у вас будет 50 различных периодов выполнения, стандартное отклонение будет одним числом, которое описывает, насколько жестким или потерять эти 50 чисел распределены вокруг вашего среднего. В сочетании с вашим средним временем выполнения стандартное отклонение поможет вам увидеть, насколько велик разброс в ваших результатах.
Рассмотрим следующие времена выполнения:
12 15 16 18 19 21 12 14
Среднее время выполнения равно 15.875
. Стандартное отклонение выборки этого набора составляет 3,27. Есть хорошее объяснение того, что 3,27 на самом деле означает (в нормально распределенной популяции примерно 68% выборок попадут в одно стандартное отклонение от среднего: например, между 15.875-3.27
и 15.875+3.27
), но Я думаю, что вы просто ищете способ количественно оценить, насколько «узкие» или «распределенные» результаты соответствуют вашему среднему значению.
Теперь рассмотрим другой набор времени выполнения (скажем, после того, как вы скомпилировали все свои тесты с помощью -O2
):
14 16 14 17 19 21 12 14
Среднее значение этих времен выполнения также 15.875
. Типовое стандартное отклонение этого набора составляет 3,0. (Таким образом, примерно 68% выборок попадут в 15.875-3.0
и 15.875+3.0
.) Этот набор более тесно сгруппирован, чем первый.
И у вас есть одно число, которое суммирует, насколько компактная или свободная группа чисел находится около среднего значения.
Предостережения
Стандартное отклонение построено на предположении нормального распределения - но ваше приложение может не распределяться нормально, поэтому имейте в виду, что стандартное отклонение в лучшем случае может быть приблизительным ориентиром. Отобразите время выполнения в гистограмме , чтобы увидеть, выглядят ли ваши данные примерно нормально, равномерно, мультимодально или ...
Кроме того, я использую выборочное стандартное отклонение, потому что это только выборка из совокупности пробных прогонов. Я не профессиональный статистик, поэтому даже это базовое предположение может быть ошибочным. Либо стандартное отклонение по совокупности, либо стандартное отклонение по выборке даст вам достаточно хорошие результаты в вашей заявке, если вы придерживаетесь выборки или совокупности. Не смешивайте два.
Я упомянул, что стандартное отклонение в сочетании со средним значением поможет вам понять ваши данные: если стандартное отклонение почти равно вашему среднему значению или, что еще хуже, больше, тогда ваши данные очень разбросаны и, возможно, ваш процесс не очень повторяется. Как вы уже поняли, интерпретировать ускорение 3%
перед лицом большого стандартного отклонения практически бесполезно. И лучший судья (по моему опыту) величины стандартного отклонения - это величина среднего.
Последнее примечание: да, вы можете рассчитать стандартное отклонение вручную, но оно утомительно после первых десяти или около того. Лучше всего использовать электронную таблицу или вольфрам альфа или ваш удобный школьный калькулятор.