Я работал над некоторыми проблемами Project Euler в Python 3 [osx 10.9], и мне нравится знать, как долго они будут выполняться.Python - time.time() vs bash time
Я использую следующие два подхода ко времени мои программы:
1)
import time
start = time.time()
[program]
print(time.time() - start)
2) в командной строке Баш, набрав time python3 ./program.py
Однако, эти два метода часто дают wildy разные результаты. В программе я работаю сейчас, первые возвращается 0.000263
(секунды, усеченные), а второй дает
real 0m0.044s
user 0m0.032s
sys 0m0.009s
Очевидно, что существует огромное несоответствие - на два порядка по сравнению с real
времени.
Мои вопросы:
a) Почему разница? Это накладные расходы от переводчика?
b) Какую мне следует использовать для точного определения времени выполнения программы? Является ли time.time()
точным с такими небольшими интервалами?
Я понимаю, что эти минимальные времена не имеют первостепенной важности; это было скорее любопытством.
Спасибо.
[UPDATE:]
Благодарственное вам все ответы & комментарии. Вы были правы с накладными расходами. Эта программа:
import time
start = time.time()
print("hello world")
print(time.time() - start)
занимает ~ 0.045 сек, в соответствии с bash.
Моя сложная проблема Эйлера Эйлера заняла ~ 0.045 сек, согласно bash. Задача решена.
Взгляните на timeit
. Благодарю.
Я бы предположил, что это связано с порядком, в котором они называются. – IanAuld
Догадка заключается в том, что Python проводит большую часть времени, загружая сценарий и разрешая импорт. Только после этого ваш 'time.time()' начнет подсчет. Попробуйте использовать класс 'profile' для запуска вашего критического алгоритма. Также см .: http://stackoverflow.com/questions/582336/how-can-you-profile-a-python-script – Nate