Python timeit(): Medindo Tempo de Execução com Exemplos Práticos
Python timeit(): Medindo Tempo de Execução com Exemplos Práticos
O que é Python timeit()?
Python timeit() é um módulo nativo projetado para medir o tempo de execução de pequenos trechos de código com alta precisão. Por padrão, executa a instrução um milhão de vezes e relata a execução mais rápida, o que ajuda a comparar o desempenho de diferentes implementações.
Sintaxe
timeit.timeit(stmt, setup, timer, number)
Parâmetros
- stmt – O código a ser cronometrado. Default é
pass. - setup – Código que executa uma vez antes do
stmt. Default épass. - timer – Função de timer opcional. O módulo fornece um default adequado.
- number – Quantas vezes o
stmté executado. Default é 1.000.000.
Importe o módulo primeiro:
import timeit
Exemplo 1 – Cronometrando uma Expressão Simples
# Testa uma operação aritmética básica
import timeit
print(timeit.timeit("output = 10*5"))
Saída típica:
0.06127880399999999
Isso mostra o tempo (em segundos) gasto na mais rápida de um milhão de execuções.
Cronometrando Múltiplas Linhas
O timeit pode lidar com código multi-linha separando instruções com ponto e vírgula ou passando uma string com aspas triplas.
Usando Ponto e Vírgula
import timeit
print("Tempo gasto:", timeit.timeit(stmt="a=10;b=10;sum=a+b"))
Saída: O tempo gasto é 0.137031482
Usando Strings com Aspas Triplas
import timeit
import_modulo = "import random"
testcode = '''
def test():
return random.randint(10, 100)
'''
print(timeit.repeat(stmt=testcode, setup=import_modulo))
Métodos Principais
- timeit.default_timer() – Retorna o tempo atual com a melhor resolução disponível.
- timeit.repeat(stmt, setup, timer, repeat, number) – Executa
timeit()repetidamente, retornando uma lista dos melhores tempos para cada execução.
Exemplo 1 – Usando timeit.timeit()
# Testa uma função que retorna inteiro aleatório
import timeit
import_modulo = "import random"
testcode = '''
def test():
return random.randint(10, 100)
'''
print(timeit.timeit(stmt=testcode, setup=import_modulo))
Saída: 0.46715912400000004
Exemplo 2 – Usando default_timer()
# Mede uma única chamada de função
import timeit
import random
def test():
return random.randint(10, 100)
inicio = timeit.default_timer()
print("Tempo inicial:", inicio)
test()
print("Diferença de tempo:", timeit.default_timer() - inicio)
Saída: O tempo inicial é: 0.220261875 ... A diferença é: 0.000473732...
Exemplo 3 – Usando timeit.repeat()
# Executa o teste cinco vezes e captura os melhores tempos
import timeit
import_modulo = "import random"
testcode = '''
def test():
return random.randint(10, 100)
'''
print(timeit.repeat(stmt=testcode, setup=import_modulo, repeat=5))
Saída: [0.436..., 0.504..., 0.506..., 0.394..., 0.354...]
Cada entrada é o melhor tempo para uma iteração dos 1.000.000 de execuções.
Uso via Linha de Comando
Você pode invocar timeit diretamente do shell:
python -m timeit [-n N] [-r N] [-s S] [-t] [-c] [-h] [code statement ...]
-n N– Número de loops para a instrução.-r N– Quantas vezes o processo de cronometragem repete.-s S– Código de setup executado uma vez antes do tempo.-t– Usatime.time()como timer.-c– Usatime.clock()como timer.-h– Mostra ajuda.
Exemplo
python -m timeit -s 'text="hello world"' # 20000000 loops, best of 5: 13.1 nsec per loop
Por que timeit() é a Melhor Ferramenta para Cronometrar Código Python
- Executa a instrução muitas vezes (default 1.000.000) e retorna a execução mais rápida, dando uma estimativa confiável.
- Coleta de lixo é desabilitada durante o tempo, impedindo que distorça resultados.
- Seleciona automaticamente o timer mais preciso para seu sistema operacional (ex.:
time.clock()no Windows,time.time()no macOS/Linux).
Resumo
O módulo timeit é essencial para benchmark de pequenos trechos Python. Seus parâmetros são diretos:
- stmt – Código a cronometrar.
- setup – Código de setup único.
- timer – Função de timer opcional.
- number – Quantas vezes o
stmtroda.
Certifique-se de usar timeit para medições precisas e repetíveis.
python
- Python: Obter Hora Atual e Dados de Fuso Horário com Facilidade
- Dominando o Módulo time do Python: Funções, Structs e Exemplos Práticos
- Domine o str.count() do Python: Como Contar Caracteres e Substrings com Exemplos
- Domine Strings format() em Python com Exemplos Claros
- Domine o Método String.find() do Python: Sintaxe, Exemplos e Alternativas
- Dominando Funções Lambda em Python: Exemplos Práticos e Boas Práticas
- Função round() em Python Explicada com Exemplos Práticos
- Dominando a Função map() do Python: Sintaxe, Exemplos e Boas Práticas
- Counter do Python em collections: Contagem Eficiente, Atualização e Operações Aritméticas
- Entendendo type() e isinstance() em Python: Exemplos Práticos