Timeit
timeit предоставляет интерфейс, позволяющий замерить время выполнения небольших врагментов кода. Точность обьеспечивается за счет функции time()
, а снижение накладных расходов запуска достигается путем многократного запуска. Модуль определяет единственный класс Timer
, который инициализируется тестируемым выражением и и инструкцией настроек пролифировщика, задающим переменные выражения. Модуль выполняет инструкцию настройки один раз, после чего можно выполнить замер через метод timeit()
, которому можно передать число ожидаемых повторений (дефолтное значение 1000000). Повторить весь цикл можно методом repeat()
(дефолтное значение повторов - 5)
>>> import timeit
>>> t = timeit.Timer('char in text', setup='text = "sample string"; char = "g"')
>>> t.timeit()
0.3955516149999312
>>> t.repeat()
[0.40183617287970225, 0.37027556854118704, 0.38344867356679524, 0.3712595970846668, 0.37866875250654886]
Для простых случаев проверку можно запустить не устанавливыая переменные используя timeit()
уровня модуля:
>>> import timeit
>>> timeit.timeit('"-".join(str(n) for n in range(100))', number=10000)
0.3018611848820001
>>> timeit.timeit('"-".join([str(n) for n in range(100)])', number=10000)
0.2727368790656328
>>> timeit.timeit('"-".join(map(str, range(100)))', number=10000)
0.23702679807320237
Также профилировщик можно вызвать через командную строку: python -m timeit '"-".join(str(n) for n in range(100))'
. Интерфейс командной строки тут
Модуль выполняет инструкцию настройки один раз, после чего выполняет переданное выражение
>>> import timeit
>>> timeit.timeit('char in text', setup='text = "sample string"; char = "g"')
0.41440500499993504
>>> timeit.timeit('text.find(char)', setup='text = "sample string"; char = "g"')
1.7246671520006203
Смотри сеще: