2
respostas

%time x time()

Na aula, o professor faz um benchmark entre dois blocos de código. Tentei fazer o benchmark do seguinte bloco usando tanto o %time e o método time(). Ficou assim:

%time
import time
start = time.time()
x=6
print([f'{x} x {i} = {x**13}' for i in range(110000)])

end = time.time()

print(end-start)

Ele me retorna isso:

CPU times: user 4 µs, sys: 0 ns, total: 4 µs
Wall time: 8.11 µs
Tempo total usando o metodo time(): 0.8317694664001465

Ou seja, notei que o %time retorna um tempo absurdamente menor que o time() - 8.11 microssegundos contra 0.8s, respectivamente. Ató contínuo, respousei o mouse sobre a setinha de execução da celula, e ele me informou 0.909s. São 3 resultados diferentes. Qual eu deveria considerar e porque?

2 respostas

Olá, Rogerio! Tudo bom?

Dentro dos notebooks interativos de Python nós temos comandos mágicos, e um deles é o time que você está utilizando.

Mas existem duas variações de time:

  • %time é o comando utilizado para avaliar o tempo de execução de um código na mesma linha (inline)
  • %%time é o comando utilizado para avaliar o tempo de execução de toda a célula.

Quando você utiliza o primeiro comando em uma linha destaca, ele não registra nada ocorrendo, e por isso o tempo de execução é baixíssimo. O comando correto ao se utilizar nesse caso é o %%time.

E para o código:

%%time
import time

start = time.time()

x = 6

print([f'{x} x {i} = {x ** 13}' for i in range(110000)])

end = time.time()

print(end-start)

A saída recebida é:

[...lista_de_valores_aqui...]
0.11438560485839844
CPU times: user 104 ms, sys: 9.22 ms, total: 113 ms
Wall time: 115 ms

Se ainda tiver alguma dúvida, estou por aqui. Ótimos estudos e grande abraço!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Quer dizer que eu uso o %time quando ele vier na mesma linha do comando, tipo assim:

%time print(234*236)

Caso eu use como da forma a seguir...

%time
import time

start = time.time()

x = 6

print([f'{x} x {i} = {x ** 13}' for i in range(110000)])

end = time.time()

print(end-start)

e ele me retorna Wall time: 5.48 µs, o que eh esse valor? A qual linha ele se refere? Â linha do proprio %time, ou seja, sem nenhum comando python?