Python Timeit() med eksempler

โšก Smart oppsummering

Python Timeit() mรฅler utfรธrelsestiden til en liten kodebit ved รฅ kjรธre den mange ganger og returnere minimumsvarigheten. Den stรธtter metodene timeit, repeat og default_timer og fungerer fra skript eller kommandolinjen.

  • ๏ธ Timeit definert: Mรฅler utfรธrelsestiden for en kodebit, og returnerer minimumsverdien over mange kjรธringer.
  • ๐Ÿงฉ Parametere: stmt, oppsett, timer og tall styrer hva som kjรธrer og hvor ofte.
  • ๐Ÿ” Metoder: timeit(), repeat() og default_timer() tilbyr forskjellige tidsalternativer.
  • ๐Ÿ’ป Kommandolinje: Kjรธr python -m timeit med flagg som -n, -r og -s.
  • โœ… Hvorfor bruke det: Deaktiverer sรธppeltรธmming og velger den mest nรธyaktige timeren per operativsystem.

Python Timeit()

Hva er Python Timeit()?

Python timeit() er en metode i Python biblioteket for รฅ mรฅle utfรธrelsestiden som den gitte kodebiten tar. De Python biblioteket kjรธrer kodesetningen 1 million ganger og gir minimumstiden tatt fra det gitte settet med kodebiter. Python timeit() er en nyttig metode som hjelper til med รฅ sjekke ytelsen til koden.

syntax

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

Parametre

  • stmt: Dette tar koden du vil mรฅle utfรธrelsestiden for. Standardverdien er "bestรฅtt".
  • oppsett: Dette vil ha oppsettdetaljer som mรฅ utfรธres fรธr stmt. Standardverdien er "bestรฅtt".
  • tidsur: Dette vil ha timerverdien, timeit() har allerede en standardverdi satt, og vi kan ignorere den.
  • Antall: Stmt vil kjรธre i henhold til nummeret som er gitt her. Standardverdien er 1000000.

For รฅ jobbe med timeit(), mรฅ vi importere modulen, som vist nedenfor:

import timeit

Fรธrste eksempel

Her er et enkelt eksempel pรฅ timeit()-funksjonen

Code Eksempel 1

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

Utgang:

0.06127880399999999

Vi har sett et enkelt eksempel som gir oss utfรธrelsestiden for den enkle kodesetningen = 10*5, og tiden det tar รฅ utfรธre den er 0.06127880399999999.

Timing Flere linjer i python-kode

Det er to mรฅter รฅ kjรธre flere linjer med kode i timeit.timeit(): ved รฅ skille linjene med semikolon eller omslutte koden som en streng med tre anfรธrselstegn.

Her er eksempler som viser hvordan det fungerer.

Eksempel 1: Bruke semikolon

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

Utgang:

The time taken is  0.137031482

Eksempel 2: Bruk av tredoble anfรธrselstegn

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

Utgang:

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

timeit โ€“ Metoder

Her er 2 viktige timeit-metoder

timeit.default_timer() : Dette vil returnere standardtiden nรฅr den utfรธres.

timeit.repeat(stmt, oppsett, tidtaker, gjenta, tall) : samme som timeit() , men med repeat kalles timeit() antall ganger repeat er gitt.

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

Utgang:

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)

Utgang:

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

Utgang:

 [0.43638873, 0.5040939680000001, 0.5069179909999999, 0.3943449330000002, 0.3546886979999999]

timeit.repeat() fungerer pรฅ samme mรฅte som timeit.timeit()-funksjonen, med den eneste forskjellen den tar i repetisjonsargumentet og gir tilbake utfรธrelsestiden i matriseformat med verdier i henhold til repetisjonsnummeret.

Utfรธrer tidsfunksjon timeit.timeit() i kommandolinjegrensesnittet

Syntaksen for รฅ utfรธre funksjonen din i timeit() pรฅ kommandolinjen er som fรธlger:

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

Kommandolinjeparametere:

  • -n N: antall ganger du vil at koden skal kjรธres.
  • -r N: antall ganger du vil at timeit()-funksjonen skal gjentas
  • -s S: dette vil ha oppsettdetaljer som vil bli utfรธrt fรธr kodekjรธring.
  • -t: for dette kan du bruke time.time()
  • -c: for dette kan du bruke time.clock()
  • -h: for hjelp
  • kodesetning: Kodedetaljene.

Eksempel

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

En annen mรฅte du kan utfรธre inne 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 beste mรฅten รฅ mรฅle utfรธrelsestiden pรฅ Python kode?

Her er noen grunner til at vi anser timeit() som den beste mรฅten รฅ mรฅle utfรธrelsestid pรฅ.

  • Den kjรธrer kodesetningen 1 million ganger som er standardverdien, og fra det vil den returnere minimumstiden det tar. Du kan ogsรฅ รธke/redusere 1 million ved รฅ sette argumentnummeret i tid ()-funksjonen.
  • Mens du utfรธrer testen, deaktiveres sรธppelinnsamlingen hver gang etter tid () funksjon.
  • timeit() internt tar nรธyaktig tid i henhold til operativsystemet som brukes. For eksempel vil den bruke time.clock() for Windows operativsystem og time.time() for mac og Linux.

Spรธrsmรฅl og svar

timeit.timeit() kjรธrer setningen et gitt antall ganger og returnerer รฉn total tid. timeit.repeat() kjรธrer hele mรฅlingen flere ganger og returnerer en liste med resultater, slik at du kan velge det beste.

timeit deaktiverer sรธppelinnsamling under mรฅling, slik at bakgrunnsopprydding ikke forvrenger timingen. Dette gjรธr resultatene mer konsistente og sammenlignbare, og fokuserer utelukkende pรฅ utfรธrelsestiden til kodestykket som testes.

Du kan skille setninger med semikolon i stmt-strengen, eller sende en streng med flere linjer ved hjelp av trippel anfรธrselstegn. For funksjoner, definer dem i oppsettet og kall dem fra stmt.

AI kan profilere kode, identifisere trege lรธkker eller dyre anrop, foreslรฅ vektoriserte eller innebygde alternativer og anbefale bedre datastrukturer, hjelpeping Utviklere fokuserer optimalisering der timeit viser de stรธrste flaskehalsene.

Ja. Gitt et kodeutdrag og dets timeit-resultater, kan AI foreslรฅ omskrivninger som listeforstรฅelser, generatoruttrykk eller bibliotekfunksjoner, og deretter kjรธrer du timeit pรฅ nytt for รฅ bekrefte at forbedringen er reell.

Oppsummer dette innlegget med: