Python Módulo timeit
O módulo timeit
timeit.timeit()
timeit.timeit(stmt='pass', setup='pass', timer=<default timer>, number=1000000, globals=None)
Essa função aceita os seguintes parâmetros:
: código cuja execução será medida. O valor padrão éstmt
.pass
: código executado antes desetup
. O valor padrão também éstmt
. Normalmente, é usado para importar módulos necessários para a execução do código a ser medido.pass
: temporizador utilizado, representado por um objetotimer
. Em geral, o valor padrão já é adequado para a plataforma.timeit.Timer
: número de vezes quenumber
será executado. O valor padrão éstmt
.1000000
: define o espaço de nomes onde o código será executado.globals
A função retorna o tempo de execução em segundos.
O exemplo a seguir mede o tempo necessário para executar uma função que calcula a soma dos números de 1 a 10000:
Aqui, a função sum
timeit.timeit()
number
100
A saída será algo como:
Tempo de execução da função sum: 0.01668926700222073
Definição do Código a Ser Medido
No exemplo anterior, a execução foi medida chamando uma função definida no código. No entanto, também é possível especificar o código diretamente como uma string:
import timeit
action = "10+12"
print(timeit.timeit(action))
Aqui, o tempo de execução da expressão 10+12
number
Se o código contiver várias instruções, elas podem ser separadas por ponto e vírgula:
import timeit
action = "a=10; b=12; a+b"
print(timeit.timeit(action))
Quando o código a ser medido for mais extenso, incluindo estruturas condicionais ou laços, pode ser útil defini-lo dentro de uma string com aspas triplas:
import timeit
action = '''
def sum():
result = 0
for n in range(100):
result += n
return result
'''
print(timeit.timeit(action))
Esse método permite medir a execução de funções completas. Como alternativa, é possível definir a função separadamente e chamá-la dentro do timeit.timeit()
Importação de Funções Externas
Se a função que será medida estiver em outro módulo, ela precisa ser importada. O parâmetro setup
sum_test()
test
import timeit
my_action = "sum_test()"
my_setup = "from test import sum_test"
print(timeit.timeit(my_action, setup=my_setup))
Uso de Temporizadores
A função timeit.timeit()
timeit.Timer
class timeit.Timer(stmt='pass', setup='pass', timer=<default timer>, number=1000000, globals=None)
O construtor dessa classe aceita os mesmos parâmetros da função timeit.timeit()
timeit
timeit.default_timer()
import timeit
def sum():
result = 0
for n in range(100):
result += n
return result
start = timeit.default_timer()
print("Start time:", start)
sum()
print("Execution time:", timeit.default_timer() - start)
Aqui, timeit.default_timer()
sum()