Ukur wektu pangolahan nganggo modul timeit Python.

Bisnis

Nggunakake modul timeit saka perpustakaan standar Python, sampeyan bisa kanthi gampang ngukur wektu eksekusi proses ing kode. Iki migunani kanggo mriksa cepet.

Rong kasus ing ngisor iki bakal dibahas ing kene.

  • Ukur ing file Python:timeit.timeit(),timeit.repeat()
  • Pangukuran nganggo Jupyter Notebook:%timeit,%%timeit

Cara liya nggunakake time.time () kanggo ngukur wektu liwati ing program.

Pangukuran ing file Python: timeit.timeit(), timeit.repeat()

Minangka conto, kita bakal ngukur wektu Processing saka fungsi prasaja, test (n), kang ngetung jumlah saka n nomer consecutive.

import timeit

def test(n):
    return sum(range(n))

n = 10000
loop = 1000

result = timeit.timeit('test(n)', globals=globals(), number=loop)
print(result / loop)
# 0.0002666301020071842

Yen sampeyan pass kode sing pengin diukur minangka senar kanggo timeit.timeit () fungsi, bakal kaleksanan NUMBER kaping lan wektu iku njupuk bakal bali.
Nilai standar kanggo nomer yaiku 1.000.000. Elinga yen sampeyan nggunakake nilai standar kanggo proses sing akeh wektu, bakal mbutuhake wektu akeh.

Kanthi ngliwati globals () minangka argumen global, kode kasebut bakal dieksekusi ing ruang jeneng global.
Tanpa iki, tes fungsi lan variabel n ora diakoni ing conto ing ndhuwur.

Kode sing bakal ditemtokake bisa dadi obyek sing bisa diarani tinimbang senar, saengga bisa ditemtokake minangka ekspresi lambda tanpa argumen; ing kasus iki, argumentasi globals ora perlu ditemtokake.

result = timeit.timeit(lambda: test(n), number=loop)
print(result / loop)
# 0.00027574066299712287

Unit asil yaiku detik. Ing kene, output yaiku wektu pangolahan saben eksekusi dibagi karo jumlah eksekusi.

Yen sampeyan ora dibagi, nilai asil bakal dadi luwih gedhe nalika sampeyan nambah jumlah eksekusi.

print(timeit.timeit(lambda: test(n), number=1))
print(timeit.timeit(lambda: test(n), number=10))
print(timeit.timeit(lambda: test(n), number=100))
# 0.0003999490290880203
# 0.0038685189792886376
# 0.03517670702422038

Nggunakake fungsi timeit.repeat (), timeit () bisa dileksanakake bola-bali. Asil bakal dipikolehi minangka dhaptar.

repeat = 5
print(timeit.repeat(lambda: test(n), repeat=repeat, number=100))
# [0.044914519996382296, 0.039663890027441084, 0.02868645201670006, 0.022745631984435022, 0.023260265996214002]

Pangukuran nganggo Jupyter Notebook:%timeit, %%timeit

Ing Jupyter Notebook (IPython), sampeyan bisa nggunakake printah sihir ing ngisor iki; ora perlu ngimpor modul timeit.

  • %timeit
  • %%timeit

%wektu

Ing %timeit, nemtokake kode target sing dipisahake karo spasi kaya argumen baris perintah.

Kanthi gawan, nomer lan baleni ing timeit.timeit () ditemtokake kanthi otomatis. Sampeyan uga bisa nemtokake kanthi opsi -n lan -r.

Asil diitung minangka rata-rata lan standar deviasi.

%timeit test(n)
# 259 µs ± 4.87 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

%timeit -r 3 -n 10000 test(n)
# 237 µs ± 6.44 µs per loop (mean ± std. dev. of 3 runs, 10000 loops each)

%% wektu

Printah ajaib %%timeit bisa digunakake kanggo ngukur wektu pangolahan sel kabeh.

Minangka conto, ayo nglakoni proses sing padha nggunakake NumPy. Opsi -n lan -r bisa diilangi.

Amarga kita ngukur wektu pangolahan kabeh sel, conto ing ngisor iki kalebu wektu kanggo ngimpor NumPy.

%%timeit -r 3 -n 10000
import numpy as np
a = np.arange(n)
np.sum(a)
# 19.7 µs ± 9.57 µs per loop (mean ± std. dev. of 3 runs, 10000 loops each)

Ora perlu nemtokake kode target minangka argumen kanggo %% timeit. Sampeyan mung kudu nulis %%timeit ing wiwitan sel, dadi paling gampang digunakake.

Copied title and URL