2015-04-20 4 views
1

Предположим, у меня есть два варианта моей скомпилированной программы: ./foo и ./bar, и я хочу узнать, действительно ли bar работает быстрее.Измерение времени выполнения программы статистически обосновано

Я могу сравнить время автономной работы, запустив time ./foo и time ./bar, но цифры меняются слишком сильно, чтобы получить здесь значимый результат.

Каков самый быстрый способ получить статистически достоверное сравнение двух команд выполнения программы командной строки? Например. который также говорит мне о дисперсии измерений?

+0

Если число меняет много, было бы интересно понять, почему? Работает ли он на одном образце данных, слишком ли он мал? первый запуск более интенсивный? – Bruce

+0

Все это, вероятно, и другие причины (браузер работает в то же время и т. Д.). Тем не менее, для одноразового измерения просто повторение теста более эффективно, чем понимание и устранение этих проблем. –

ответ

0

модуль питона timeit также предоставляет простой интерфейс командной строки, которая уже гораздо удобнее, чем выдавать time команды несколько раз:

$ python -m timeit -s 'import os' 'os.system("./IsSpace-before")' 
10 loops, best of 3: 4.9 sec per loop 
$ python -m timeit -s 'import os' 'os.system("./IsSpace-after")' 
10 loops, best of 3: 4.9 sec per loop 

Модуль timeit не вычисляет средние значения и дисперсии, а просто берет минимум, на основании того, что все погрешности измерения увеличить измерение.

Смежные вопросы