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

Смотри сеще: