Python Timeit() esimerkeillä

⚡ Älykäs yhteenveto

Python Timeit() mittaa pienen koodinpätkän suoritusaikaa suorittamalla sen useita kertoja ja palauttamalla vähimmäiskeston. Se tukee timeit-, repeat- ja default_timer-metodeja ja toimii komentosarjoista tai komentoriviltä.

  • ⏱️ Aikaviive määritelty: Mittaa koodinpätkän suoritusaikaa ja palauttaa useiden suorituskertojen minimin.
  • 🧩 parametrit: stmt, asetukset, ajastin ja numerot ohjaavat mitä ja kuinka usein.
  • 🔁 Menetelmät: timeit(), repeat() ja default_timer() tarjoavat erilaisia ​​ajoitusvaihtoehtoja.
  • 💻 Komentorivi: Suorita python -m timeit käyttämällä valitsimia kuten -n, -r ja -s.
  • Miksi käyttää sitä: Poistaa roskienkeruun käytöstä ja valitsee tarkimman ajastimen käyttöjärjestelmää kohden.

Python Aikataulu()

Mikä on Python Timeit()?

Python timeit() on menetelmä sisällä Python kirjasto mittaamaan tietyn koodinpätkän suoritusaikaa. The Python kirjasto suorittaa koodilausekkeen miljoona kertaa ja tarjoaa vähimmäisajan annetusta koodinpätkäjoukosta. Python timeit() on hyödyllinen menetelmä, joka auttaa tarkistamaan koodin suorituskyvyn.

Syntaksi

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

parametrit

  • stmt: Tämä ottaa koodin, jonka suoritusaikaa haluat mitata. Oletusarvo on "pass".
  • setup: Tämä sisältää asetukset, jotka on suoritettava ennen stmt. Oletusarvo on "hyväksytty".
  • ajastin: Tällä on ajastinarvo, timeit():lle on jo asetettu oletusarvo, ja voimme jättää sen huomiotta.
  • numero: stmt suoritetaan tässä annetun numeron mukaisesti. Oletusarvo on 1000000.

Jotta voimme työskennellä timeit(:n) kanssa, meidän on tuotava moduuli alla olevan kuvan mukaisesti:

import timeit

Ensimmäinen esimerkki

Tässä on yksinkertainen esimerkki timeit()-funktiosta

Code Esimerkki 1

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

lähtö:

0.06127880399999999

Olemme nähneet yksinkertaisen esimerkin, joka antaa meille yksinkertaisen koodilausekkeen suoritusajan = 10*5, ja sen suorittamiseen kuluva aika on 0.06127880399999999.

Ajoitus Useita rivejä python-koodissa

On kaksi tapaa suorittaa useita koodirivejä timeit.timeit(:ssä): erottamalla rivit puolipisteillä tai sulkemalla koodi merkkijonona kolminkertaisilla lainausmerkeillä.

Tässä on esimerkkejä, jotka osoittavat sen toiminnan.

Esimerkki 1: Puolipisteen käyttö

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

lähtö:

The time taken is  0.137031482

Esimerkki 2: Kolminkertaisten lainausmerkkien käyttö

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

lähtö:

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

timeit – menetelmät

Tässä on 2 tärkeää aikamittausmenetelmää

timeit.default_timer() : Tämä palauttaa oletusajan, kun se suoritetaan.

timeit.repeat(stmt, asetus, ajastin, toisto, numero) : sama kuin timeit() , mutta toistolla timeit() kutsutaan toistokertojen lukumääräksi.

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

lähtö:

0.46715912400000004

Esimerkki 2

default_timer() Esimerkki

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

lähtö:

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

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

lähtö:

 [0.43638873, 0.5040939680000001, 0.5069179909999999, 0.3943449330000002, 0.3546886979999999]

timeit.repeat() toimii samalla tavalla kuin timeit.timeit()-funktio, sillä ainoalla erolla se ottaa toistoargumentin ja palauttaa suoritusajan taulukkomuodossa toistonumeron mukaisilla arvoilla.

Suoritetaan ajoitustoimintoa timeit.timeit() komentoriviliittymässä

Syntaksi funktion suorittamiseksi komentorivin timeit() sisällä on seuraava:

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

Komentoriviparametrit:

  • -n N: kuinka monta kertaa haluat koodin suoritettavan.
  • -r N: kuinka monta kertaa haluat timeit()-funktion toistuvan
  • -s S: Tässä on asetukset, jotka suoritetaan ennen koodin suorittamista.
  • -t: tähän voit käyttää aika.aika()
  • -c: tähän voit käyttää aika.kello()
  • -h: apua
  • koodilause: koodin tiedot.

esimerkki

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

Toinen tapa, jolla voit suorittaa komentorivin sisällä, on alla kuvattu:

esimerkki

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

Miksi timeit() on paras tapa mitata suoritusaikaa Python koodi?

Tässä on muutamia syitä, miksi katsomme, että timeit() on paras tapa mitata suoritusaikaa.

  • Se suorittaa koodilausekkeen miljoona kertaa, mikä on oletusarvo, ja siitä lähtien se palauttaa sinulle vähimmäisajan. Voit myös lisätä/vähentää 1 miljoonaa asettamalla argumentin numero aika () -funktiossa.
  • Testin suorittamisen aikana roskien kerääminen on poistettu käytöstä joka kerta aika () -toiminnolla.
  • timeit() ottaa sisäisesti tarkan ajan käytössäsi olevan käyttöjärjestelmän mukaan. Esimerkiksi se käyttää aika.kello() for Windows käyttöjärjestelmä ja time.time() macille ja Linuxille.

UKK

timeit.timeit() suorittaa lausekkeen tietyn määrän kertoja ja palauttaa yhden kokonaisajan. timeit.repeat() suorittaa koko mittauksen useita kertoja ja palauttaa tulosluettelon, jolloin voit valita parhaan.

timeit poistaa roskienkeruun käytöstä mittauksen aikana, jotta taustapuhdistus ei vääristä ajoitusta. Tämä tekee tuloksista johdonmukaisempia ja vertailukelpoisempia, keskittyen pelkästään testattavan koodinpätkän suoritusaikaan.

Voit erottaa lausekkeet puolipisteillä stmt-merkkijonon sisällä tai välittää monirivisen merkkijonon käyttämällä kolmoislainausmerkkejä. Funktiot määritetään asetuksissa ja kutsutaan stmt:stä.

Tekoäly voi profiloida koodia, tunnistaa hitaita silmukoita tai kalliita puheluita, ehdottaa vektoroituja tai sisäänrakennettuja vaihtoehtoja ja suositella parempia tietorakenteita, auttaaping Kehittäjät keskittyvät optimointiin siellä, missä TimeIt näyttää suurimmat pullonkaulat.

Kyllä. Kun otetaan huomioon koodinpätkä ja sen timeit-tulokset, tekoäly voi ehdottaa uudelleenkirjoituksia, kuten listan ymmärtämistä, generaattorilausekkeita tai kirjastofunktioita, ja sitten suoritat timeit-komennon uudelleen varmistaaksesi, että parannus on todellista.

Tiivistä tämä viesti seuraavasti: