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: