Утилита для проверки времени выполнения?
Существует ли команда bash или библиотека Python, которая будет определять время выполнения файла / команды? Я хочу иметь возможность решить, какой язык будет лучше всего работать для задачи или иметь возможность точно знать, что код Python a работает быстрее, чем код Python B. Если есть способ сделать это, но этот вопрос не по теме, пожалуйста, оставьте комментарий с поисковыми терминами или другими ресурсами.
5 ответов:
Да, это называется командой
time
. Как вtime command arg1 arg2 arg3
.Это выводит 3 поля, что-то вроде этого:
Первый - это фактическое время настенных часов. Во-вторых, сколько времени программа провела в пользовательском пространстве. Третий - сколько времени программа провела в пространстве ядра.real 0m0.631s user 0m0.154s sys 0m0.458s
Вы можете использовать timeit:
from timeit import timeit print timeit("function_2(arg)", "from __main__ import function_2, arg", number=5)
Что следует отметить:
from __main__ import function, arg
предоставляет модулюtimeit
доступ к функциям и переменным в скрипте.- функция и связанные с ней аргументы должны передаваться в виде строк.
- number = количество запусков [по умолчанию 1000000].
- время, возвращаемое timeit, является суммой
number
пробегов...Не средний (поймал меня однажды...).
time
Например:
time ls -a
Дает, после перечисления файлов,
real 0m0.240s user 0m0.002s sys 0m0.004s
Есть много вариантов того, что нужно отслеживать с точки зрения ресурсов. Подробности смотрите на главной странице.
python -m timeit "setup" "code"
Если вы хотите, чтобы время кода Python. Полезно для быстрого и грязного тестирования производительности.
Я использую этот фрагмент, который я нашел в интернете где-то, что я не могу вспомнить:
import atexit import time def secondsToStr(t): return "%d:%02d:%02d.%03d" % \ reduce(lambda ll,b : divmod(ll[0],b) + ll[1:], [(t*1000,),1000,60,60]) line = "="*40 def log(s, elapsed=None): print line print secondsToStr(time.clock()), '-', s if elapsed: print "Elapsed time:", elapsed print line print def endlog(): end = time.clock() elapsed = end-start log("End Program", secondsToStr(elapsed)) def now(): return secondsToStr(time.clock()) start = time.clock() atexit.register(endlog) log("Start Program")