Python Timeit() com exemplos

โšก Resumo Inteligente

Python A funรงรฃo `timeit()` mede o tempo de execuรงรฃo de um pequeno trecho de cรณdigo, executando-o vรกrias vezes e retornando a duraรงรฃo mรญnima. Ela suporta os mรฉtodos `timeit`, `repeat` e `default_timer` e funciona tanto em scripts quanto na linha de comando.

  • โฑ๏ธ Definiรงรฃo de tempo: Mede o tempo de execuรงรฃo de um trecho de cรณdigo, retornando o mรญnimo em vรกrias execuรงรตes.
  • ๐Ÿงฉ parรขmetros: stmt, setup, timer e number controlam o que รฉ executado e com que frequรชncia.
  • ๐Ÿ” Mรฉtodos: timeit(), repeat() e default_timer() oferecem diferentes opรงรตes de temporizaรงรฃo.
  • ๐Ÿ’ป Linha de comando: Execute o comando `python -m timeit` com opรงรตes como `-n`, `-r` e `-s`.
  • โœ… Por que usar: Desativa a coleta de lixo e seleciona o temporizador mais preciso para cada sistema operacional.

Python Timeit()

O que รฉ a Python Tempoit()?

Python timeit () รฉ um mรฉtodo em Python biblioteca para medir o tempo de execuรงรฃo de um determinado trecho de cรณdigo. O Python A biblioteca executa a instruรงรฃo de cรณdigo 1 milhรฃo de vezes e fornece o tempo mรญnimo necessรกrio para um determinado conjunto de trechos de cรณdigo. Python timeit() รฉ um mรฉtodo รบtil que ajuda a verificar o desempenho do cรณdigo.

Sintaxe

timeit.timeit(stmt, setup,timer, number)

Parรขmetros Tรฉcnicos

  • stmt: Isso levarรก o cรณdigo cujo tempo de execuรงรฃo vocรช deseja medir. O valor padrรฃo รฉ โ€œaprovadoโ€.
  • instalaรงรฃo: Isso terรก detalhes de configuraรงรฃo que precisam ser executados antes do stmt. O valor padrรฃo รฉ โ€œaprovadoโ€.
  • cronรดmetro: Este terรก o valor do timer, timeit() jรก tem um valor padrรฃo definido e podemos ignorรก-lo.
  • nรบmero: O stmt serรก executado de acordo com o nรบmero fornecido aqui. O valor padrรฃo รฉ 1000000.

Para trabalhar com timeit(), precisamos importar o mรณdulo, conforme mostrado abaixo:

import timeit

Primeiro exemplo

Aqui estรก um exemplo simples da funรงรฃo timeit()

Code Exemplo 1

# testing timeit()
import timeit
print(timeit.timeit('output = 10*5'))

Saรญda:

0.06127880399999999

Vimos um exemplo simples que nos dรก o tempo de execuรงรฃo da instruรงรฃo de cรณdigo simples saรญda = 10*5, e o tempo necessรกrio para executรก-la รฉ 0.06127880399999999.

Cronometrando mรบltiplas linhas em cรณdigo python

Hรก duas maneiras de executar vรกrias linhas de cรณdigo em timeit.timeit(): separando as linhas com ponto e vรญrgula ou colocando o cรณdigo como uma string entre aspas triplas.

Aqui estรฃo exemplos que mostram o funcionamento disso.

Exemplo 1: Usando ponto e vรญrgula

import timeit
print("The time taken is ",timeit.timeit(stmt='a=10;b=10;sum=a+b'))

Saรญda:

The time taken is  0.137031482

Exemplo 2: Usando aspas triplas

import timeit
import_module = "import random"
testcode = '''
def test():
    return random.randint(10, 100)
'''
print(timeit.repeat(stmt=testcode, setup=import_module))

Saรญda:

C:\pythontest>python testtimeit.py
The time taken is  0.182619178

timeit โ€“ Mรฉtodos

Aqui estรฃo 2 mรฉtodos timeit importantes

timeit.default_timer() : Isso retornarรก o horรกrio padrรฃo quando executado.

timeit.repeat(stmt, configuraรงรฃo, temporizador, repetiรงรฃo, nรบmero) : o mesmo que timeit() , mas com repeat o timeit() รฉ chamado o nรบmero de vezes que a repetiรงรฃo รฉ dada.

Exemplo de programa 1

# testing timeit()
import timeit
import_module = "import random"
testcode = '''
def test():
    return random.randint(10, 100)
'''
print(timeit.timeit(stmt=testcode, setup=import_module))

Saรญda:

0.46715912400000004

Exemplo 2

default_timer() Exemplo

# testing timeit()

import timeit
import random

def test():
    return random.randint(10, 100)

starttime = timeit.default_timer()
print("The start time is :",starttime)
test()
print("The time difference is :", timeit.default_timer() - starttime)

Saรญda:

The start time is : 0.220261875
The time difference is : 0.0004737320000000045

Exemplo 3: timeit.repeat()

# testing timeit()
import timeit
import_module = "import random"
testcode = '''
def test():
    return random.randint(10, 100)
'''
print(timeit.repeat(stmt=testcode, setup=import_module, repeat=5))

Saรญda:

 [0.43638873, 0.5040939680000001, 0.5069179909999999, 0.3943449330000002, 0.3546886979999999]

timeit.repeat() funciona de forma semelhante ร  funรงรฃo timeit.timeit(), com a รบnica diferenรงa que recebe o argumento de repetiรงรฃo e retorna o tempo de execuรงรฃo em formato de array com valores de acordo com o nรบmero de repetiรงรฃo.

Executando a funรงรฃo de temporizaรงรฃo timeit.timeit() dentro da interface de linha de comando

A sintaxe para executar sua funรงรฃo dentro de timeit() na linha de comando รฉ a seguinte:

python -m timeit [-n N] [-r N] [-s S] [-t] [-c] [-h] [code statement ...]

Parรขmetros da linha de comando:

  • -n N: o nรบmero de vezes que vocรช deseja que o cรณdigo seja executado.
  • -r N: o nรบmero de vezes que vocรช deseja que a funรงรฃo timeit() se repita
  • -s S: terรก detalhes de configuraรงรฃo que serรฃo executados antes da execuรงรฃo do cรณdigo.
  • -t: para isso, vocรช pode usar time.time()
  • -c: para isso, vocรช pode usar time.clock()
  • -h: para obter ajuda
  • instruรงรฃo de cรณdigo: os detalhes do cรณdigo.

Exemplo

C:\pythontest>python -m timeit -s 'text="hello world"'
20000000 loops, best of 5: 13.1 nsec per loop

Outra maneira de executar dentro da linha de comando รฉ mostrada abaixo:

Exemplo

>>> import timeit
>>> print("The time taken is ",timeit.timeit(stmt='a=10;b=10;sum=a+b'))
The time taken is  0.15048536300000137
>>>

Por que timeit() รฉ a melhor maneira de medir o tempo de execuรงรฃo de Python cรณdigo?

Aqui estรฃo alguns motivos pelos quais consideramos que timeit() รฉ a melhor maneira de medir o tempo de execuรงรฃo.

  • Ele executa a instruรงรฃo do cรณdigo 1 milhรฃo de vezes que รฉ o valor padrรฃo e, a partir disso, retornarรก o tempo mรญnimo necessรกrio. Vocรช tambรฉm pode aumentar/diminuir 1 milhรฃo definindo o nรบmero do argumento na funรงรฃo time ().
  • Durante a execuรงรฃo do teste, a coleta de lixo รฉ sempre desabilitada pela funรงรฃo time().
  • timeit() internamente leva o tempo exato de acordo com o sistema operacional usado. Por exemplo, ele usarรก time.clock() para Windows sistema operacional e time.time() para Mac e Linux.

Perguntas Frequentes

`timeit.timeit()` executa a instruรงรฃo um nรบmero definido de vezes e retorna um รบnico tempo total. `timeit.repeat()` executa essa mediรงรฃo vรกrias vezes e retorna uma lista de resultados, permitindo que vocรช escolha o melhor.

O timeit desativa a coleta de lixo durante a mediรงรฃo, para que a limpeza em segundo plano nรฃo distorรงa o tempo. Isso torna os resultados mais consistentes e comparรกveis, focando exclusivamente no tempo de execuรงรฃo do trecho de cรณdigo que estรก sendo testado.

Vocรช pode separar instruรงรตes com ponto e vรญrgula dentro da string stmt ou passar uma string de vรกrias linhas usando aspas triplas. Para funรงรตes, defina-as em setup e chame-as a partir de stmt.

A IA pode analisar o cรณdigo, identificar loops lentos ou chamadas dispendiosas, sugerir alternativas vetorizadas ou integradas e recomendar estruturas de dados melhores, ajudando no desenvolvimento de cรณdigo.ping Os desenvolvedores concentram a otimizaรงรฃo onde o Timeit identifica os maiores gargalos.

Sim. Dado um trecho de cรณdigo e seus resultados do timeit, a IA pode sugerir reescritas, como list comprehensions, expressรตes geradoras ou funรงรตes de biblioteca. Em seguida, vocรช executa o timeit novamente para confirmar se a melhoria รฉ real.

Resuma esta postagem com: