Python Timeit() med eksempler

โšก Smart opsummering

Python Timeit() mรฅler udfรธrelsestiden for et lille kodestykke ved at kรธre det mange gange og returnere den minimale varighed. Den understรธtter metoderne timeit, repeat og default_timer og fungerer fra scripts eller kommandolinjen.

  • โฑ๏ธ Timeit Defineret: Mรฅler udfรธrelsestiden for et kodestykke og returnerer minimumsvรฆrdien over mange kรธrsler.
  • ๐Ÿงฉ Parametre: stmt, opsรฆtning, timer og tal styrer, hvad der kรธrer og hvor ofte.
  • ๐Ÿ” Metoder: timeit(), repeat() og default_timer() tilbyder forskellige timingmuligheder.
  • ๐Ÿ’ป Kommandolinje: Kรธr python -m timeit med flag som -n, -r og -s.
  • โœ… Hvorfor bruge det: Deaktiverer affaldsindsamling og vรฆlger den mest prรฆcise timer pr. operativsystem.

Python Timeit()

Hvad er Python Timeit()?

Python timeit() er en metode i Python bibliotek for at mรฅle den eksekveringstid, som det givne kodestykke tager. De Python biblioteket kรธrer kodesรฆtningen 1 million gange og giver den minimale tid, der tages fra det givne sรฆt kodestykker. Python timeit() er en nyttig metode, der hjรฆlper med at kontrollere kodens ydeevne.

Syntaks

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

Driftsparametre

  • stmt: Dette vil tage den kode, som du vil mรฅle udfรธrelsestiden for. Standardvรฆrdien er "bestรฅ".
  • setup: Dette vil have opsรฆtningsdetaljer, der skal udfรธres fรธr stmt. Standardvรฆrdien er "bestรฅ".
  • timer: Dette vil have timervรฆrdien, timeit() har allerede en standardvรฆrdi sat, og vi kan ignorere det.
  • nummer: Stmt'en udfรธres i henhold til nummeret, der er angivet her. Standardvรฆrdien er 1000000.

For at arbejde med timeit(), skal vi importere modulet, som vist nedenfor:

import timeit

Fรธrste eksempel

Her er et simpelt eksempel pรฅ timeit() funktion

Code Eksempel 1

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

Output:

0.06127880399999999

Vi har set et simpelt eksempel, der giver os eksekveringstiden for den simple kodesรฆtning output = 10*5, og tiden det tager at udfรธre den er 0.06127880399999999.

Timing Flere linjer i python-kode

Der er to mรฅder at udfรธre flere linjer kode i timeit.timeit(): ved at adskille linjerne med semikolon eller ved at omslutte koden som en streng med tredobbelte anfรธrselstegn.

Her er eksempler, der viser, hvordan det fungerer.

Eksempel 1: Brug af semikolon

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

Output:

The time taken is  0.137031482

Eksempel 2: Brug af tredobbelte anfรธrselstegn

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

Output:

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

timeit โ€“ Metoder

Her er 2 vigtige timeit-metoder

timeit.default_timer() : Dette returnerer standardtidspunktet, nรฅr det udfรธres.

timeit.repeat(stmt, opsรฆtning, timer, gentag, nummer) : samme som timeit() , men med repeat kaldes timeit() det antal gange, der er givet gentagelse.

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

Output:

0.46715912400000004

Eksempel 2

default_timer() Eksempel

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

Output:

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

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

Output:

 [0.43638873, 0.5040939680000001, 0.5069179909999999, 0.3943449330000002, 0.3546886979999999]

timeit.repeat() fungerer pรฅ samme mรฅde som timeit.timeit()-funktionen, med den eneste forskel, den tager i gentagelsesargumentet og giver udfรธrelsestiden tilbage i array-format med vรฆrdier i henhold til gentagelsestallet.

Udfรธrelse af timing-funktionen timeit.timeit() i kommandolinjegrรฆnsefladen

Syntaksen til at udfรธre din funktion inde i timeit() pรฅ kommandolinjen er som fรธlger:

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

Kommandolinjeparametre:

  • -n N: det antal gange, du รธnsker, at koden skal udfรธres.
  • -r N: det antal gange, du รธnsker, at timeit()-funktionen skal gentages
  • -s S: dette vil have opsรฆtningsdetaljer, der vil blive eksekveret fรธr kodeudfรธrelse.
  • -t: til dette kan du bruge time.time()
  • -c: til dette kan du gรธre brug af time.clock()
  • -h: for hjรฆlp
  • kodeerklรฆring: Kodedetaljerne.

Eksempel

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

En anden mรฅde, du kan udfรธre inde i kommandolinjen, er som vist nedenfor:

Eksempel

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

Hvorfor er timeit() den bedste mรฅde at mรฅle udfรธrelsestiden pรฅ Python kode?

Her er et par grunde til, hvorfor vi betragter timeit() som den bedste mรฅde at mรฅle eksekveringstid pรฅ.

  • Den kรธrer kodesรฆtningen 1 million gange, som er standardvรฆrdien, og derfra vil den returnere den minimale tid, det tager. Du kan ogsรฅ รธge/mindske 1 million ved at indstille argumentnummeret i tid ()-funktionen.
  • Mens testen udfรธres, deaktiveres affaldsindsamlingen hver gang efter tid () funktion.
  • timeit() internt tager den nรธjagtige tid i henhold til dit operativsystem, der bruges. For eksempel vil den bruge time.clock() til Windows styresystem og time.time() til mac og Linux.

Ofte Stillede Spรธrgsmรฅl

timeit.timeit() kรธrer sรฆtningen et bestemt antal gange og returnerer en enkelt samlet tid. timeit.repeat() kรธrer hele mรฅlingen flere gange og returnerer en liste over resultater, sรฅ du kan vรฆlge det bedste.

timeit deaktiverer affaldsindsamling under mรฅling, sรฅ baggrundsoprydning ikke forvrรฆnger timingen. Dette gรธr resultaterne mere konsistente og sammenlignelige, idet der udelukkende fokuseres pรฅ udfรธrelsestiden for det kodestykke, der testes.

Du kan adskille sรฆtninger med semikolon i stmt-strengen eller sende en streng med flere linjer ved hjรฆlp af tredobbelte anfรธrselstegn. For funktioner skal du definere dem i opsรฆtningen og kalde dem fra stmt.

AI kan profilere kode, identificere langsomme lรธkker eller dyre kald, foreslรฅ vektoriserede eller indbyggede alternativer og anbefale bedre datastrukturer.ping Udviklere fokuserer optimering der, hvor timeit viser de stรธrste flaskehalse.

Ja. Givet et kodestykke og dets timeit-resultater kan AI foreslรฅ omskrivninger sรฅsom listeforstรฅelser, generatorudtryk eller biblioteksfunktioner, og derefter kรธrer du timeit igen for at bekrรฆfte, at forbedringen er reel.

Opsummer dette indlรฆg med: