Как измерить время выполнения метода с помощью timeit Python?
Есть метод поиска подстроки в строке и нужно измерить время выполнения этого метода. Сейчас я измеряю так:
timeit.timeit('method(pattern, text)','from xxx import method', 'from __main__ import pattern')
Но это не работает - выходит ошибка "TypeError: 'str' object cannot be interpreted as an integer". Как исправить ошибку и как сделать так, чтобы я мог вместо text мог использовать i-ый элемент массива?
timeit.timeit('method(pattern, text[i])', ...)
Ответы (1 шт):
timeit по умолчанию выполняется в отдельном пространстве имён. Если вам нужно, чтобы в выражении использовались глобальные переменные, нужно задать параметр globals:
text=["a","b", "c"]
i=2
timeit.timeit("len(text[i])", globals=globals())
Если globals не задавать, будет ошибка NameError: name 'text' is not defined
Функция timeit возвращает суммарное время выполнения. Для того, чтобы узнать среднее время выполнения одной итерации, нужно разделить возвращаемое значение на число повторений:
text=["a","b", "c"]
i=2
n = 10000
timeit.timeit("len(text[i])", globals=globals(), number=n)/n
Результат 8.309150000013688e-08