Python Timeit() s primjerima

โšก Pametni saลพetak

Python Timeit() mjeri vrijeme izvrลกavanja malog isjeฤka koda tako ลกto ga pokreฤ‡e viลกe puta i vraฤ‡a minimalno trajanje. Podrลพava metode timeit, repeat i default_timer te radi iz skripti ili naredbenog retka.

  • ๐Ÿ‡ง๐Ÿ‡ท Definirano vrijeme: Mjeri vrijeme izvrลกavanja isjeฤka koda, vraฤ‡ajuฤ‡i minimalno vrijeme tijekom viลกe izvrลกavanja.
  • ๐Ÿงฉ Parametri: stmt, setup, timer i broj kontroliraju ลกto se izvrลกava i koliko ฤesto.
  • ๐Ÿ” Metode: timeit(), repeat() i default_timer() nude razliฤite opcije mjerenja vremena.
  • ๐Ÿ’ป Naredbeni redak: Pokrenite python -m timeit sa zastavicama kao ลกto su -n, -r i -s.
  • โœ… Zaลกto ga koristiti: Onemoguฤ‡uje sakupljanje smeฤ‡a i odabire najtoฤniji timer za svaki operativni sustav.

Python Vrijeme()

ล to je Python Timeit()?

Python timeit() je metoda u Python knjiลพnica za mjerenje vremena izvrลกenja zadanog isjeฤka koda. The Python knjiลพnica izvodi naredbu koda 1 milijun puta i osigurava minimalno vrijeme potrebno za dani skup isjeฤaka koda. Python timeit() je korisna metoda koja pomaลพe u provjeri izvedbe koda.

Sintaksa

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

Parametri

  • stmt: Ovo ฤ‡e uzeti kod za koji ลพelite izmjeriti vrijeme izvrลกenja. Zadana vrijednost je "prolaz".
  • postava: Ovo ฤ‡e sadrลพavati detalje postavljanja koje je potrebno izvrลกiti prije stmt-a. Zadana vrijednost je "prolaz".
  • vremena: Ovo ฤ‡e imati vrijednost timera, timeit() veฤ‡ ima postavljenu zadanu vrijednost i moลพemo je zanemariti.
  • broj: stmt ฤ‡e se izvrลกiti prema broju koji je ovdje naveden. Zadana vrijednost je 1000000.

Da bismo radili s timeit(), moramo uvesti modul, kao ลกto je prikazano u nastavku:

import timeit

Prvi primjer

Evo jednostavnog primjera funkcije timeit().

Code Primjer 1

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

Izlaz:

0.06127880399999999

Vidjeli smo jednostavan primjer koji nam daje vrijeme izvrลกenja izlaza naredbe jednostavnog koda = 10*5, a vrijeme potrebno za njegovo izvrลกenje je 0.06127880399999999.

Vremenski raspored Viลกe redaka u python kodu

Postoje dva naฤina za izvrลกavanje viลกe redaka koda u timeit.timeit(): odvajanjem redaka toฤkom-zarezom ili dodavanjem koda kao niza s trostrukim navodnicima.

Evo primjera koji pokazuju kako to funkcionira.

Primjer 1: Upotreba toฤke i zareza

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

Izlaz:

The time taken is  0.137031482

Primjer 2: Koriลกtenje trostrukih navodnika

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

Izlaz:

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

timeit โ€“ Metode

Ovdje su 2 vaลพne timeit metode

timeit.default_timer() : Ovo ฤ‡e vratiti zadano vrijeme kada se izvrลกi.

timeit.repeat(stmt, postava, mjeraฤ vremena, ponavljanje, broj) : isto kao timeit() , ali s repeat timeit() se poziva koliko je puta zadano ponavljanje.

Primjer 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))

Izlaz:

0.46715912400000004

Primjer 2

default_timer() Primjer

# 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)

Izlaz:

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

Primjer 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))

Izlaz:

 [0.43638873, 0.5040939680000001, 0.5069179909999999, 0.3943449330000002, 0.3546886979999999]

timeit.repeat() radi sliฤno funkciji timeit.timeit(), s jedinom razlikom ลกto uzima argument ponavljanja i vraฤ‡a vrijeme izvrลกenja u formatu polja s vrijednostima prema broju ponavljanja.

Izvrลกavanje vremenske funkcije timeit.timeit() unutar suฤelja naredbenog retka

Sintaksa za izvrลกavanje vaลกe funkcije unutar timeit() na naredbenom retku je sljedeฤ‡a:

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

Parametri naredbenog retka:

  • -n N: koliko puta ลพelite da se kรดd izvrลกi.
  • -r N: koliko puta ลพelite da se funkcija timeit() ponovi
  • -s S: ovo ฤ‡e imati pojedinosti o postavljanju koje ฤ‡e se izvrลกiti prije izvrลกenja koda.
  • -t: za ovo moลพete koristiti time.time()
  • -c: za ovo moลพete koristiti time.clock()
  • -h: za pomoฤ‡
  • iskaz koda: pojedinosti koda.

Primjer

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

Drugi naฤin na koji moลพete izvrลกiti unutar naredbenog retka je kako je prikazano u nastavku:

Primjer

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

Zaลกto je timeit() najbolji naฤin za mjerenje vremena izvrลกenja Python kodirati?

Evo nekoliko razloga zaลกto smatramo da je timeit() najbolji naฤin za mjerenje vremena izvrลกenja.

  • Pokreฤ‡e iskaz koda 1 milijun puta, ลกto je zadana vrijednost, i iz toga ฤ‡e vam vratiti minimalno potrebno vrijeme. Takoฤ‘er moลพete poveฤ‡ati/smanjiti 1 milijun postavljanjem broja argumenta u funkciji vremena ().
  • Tijekom izvoฤ‘enja testa, skupljanje smeฤ‡a je svaki put onemoguฤ‡eno funkcijom time ().
  • timeit() interno uzima toฤno vrijeme prema vaลกem operativnom sustavu koji koristite. Na primjer, koristit ฤ‡e time.clock() za Windows operativni sustav i vrijeme.time() za mac i Linux.

Pitanja i odgovori

timeit.timeit() izvrลกava naredbu odreฤ‘eni broj puta i vraฤ‡a jedno ukupno vrijeme. timeit.repeat() izvrลกava cijelo mjerenje nekoliko puta i vraฤ‡a popis rezultata, omoguฤ‡ujuฤ‡i vam da odaberete najbolji.

timeit onemoguฤ‡uje sakupljanje smeฤ‡a tijekom mjerenja tako da ฤiลกฤ‡enje pozadine ne iskrivljuje vrijeme. To ฤini rezultate dosljednijima i usporedivima, fokusirajuฤ‡i se iskljuฤivo na vrijeme izvrลกavanja testiranog isjeฤka.

Naredbe moลพete odvojiti toฤka-zarezom unutar stmt niza ili proslijediti viลกeredni niz pomoฤ‡u trostrukih navodnika. Funkcije definirajte u postavkama i pozovite ih iz stmt-a.

Umjetna inteligencija moลพe profilirati kod, identificirati spore petlje ili skupe pozive, predloลพiti vektorizirane ili ugraฤ‘ene alternative i preporuฤiti bolje strukture podataka,ping Programeri se fokusiraju na optimizaciju tamo gdje timeit pokazuje najveฤ‡a uska grla.

Da. S obzirom na isjeฤak i njegove rezultate pomoฤ‡u timeit-a, umjetna inteligencija moลพe predloลพiti prepisivanja poput popisa razumijevanja, izraza generatora ili funkcija biblioteke, a zatim ponovno pokrenete timeit kako biste potvrdili da je poboljลกanje stvarno.

Saลพmite ovu objavu uz: