Python Timeit() z przykładami

⚡ Inteligentne podsumowanie

Python Funkcja Timeit() mierzy czas wykonania krótkiego fragmentu kodu, uruchamiając go wielokrotnie i zwracając minimalny czas trwania. Obsługuje metody timeit, repeat i default_timer i działa ze skryptów lub wiersza poleceń.

  • ⏱️. Definicja czasu: Mierzy czas wykonania fragmentu kodu, zwracając wartość minimalną z wielu przebiegów.
  • 🧩 Parametry: stmt, setup, timer i numer kontrolują, co się uruchamia i jak często.
  • 🔁 metody: timeit(), repeat() i default_timer() oferują różne opcje pomiaru czasu.
  • 💻 Wiersz poleceń: Uruchom polecenie python -m timeit z flagami -n, -r i -s.
  • Dlaczego go używać: Wyłącza zbieranie śmieci i wybiera najdokładniejszy licznik czasu dla danego systemu operacyjnego.

Python Czas to()

Czym jest Python Czas()?

Python czas() jest metodą w Python bibliotekę do pomiaru czasu wykonania danego fragmentu kodu. The Python Biblioteka uruchamia instrukcję code 1 milion razy i podaje minimalny czas potrzebny na wykonanie danego zestawu fragmentów kodu. Python timeit() to przydatna metoda pomagająca sprawdzić wydajność kodu.

Składnia

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

Parametry

  • stmt: To zajmie kod, dla którego chcesz zmierzyć czas wykonania. Wartość domyślna to „pass”.
  • ustawienie: Tutaj będą szczegóły konfiguracji, które muszą zostać wykonane przed stmt. Wartość domyślna to „pass”.
  • Timer: Będzie to miało wartość timera, timeit() ma już ustawioną wartość domyślną i możemy ją zignorować.
  • numer: Stmt zostanie wykonany zgodnie z liczbą podaną tutaj. Wartość domyślna to 1000000.

Aby pracować z timeit(), musimy zaimportować moduł, jak pokazano poniżej:

import timeit

Pierwszy przykład

Oto prosty przykład funkcji timeit().

Code 1 przykład

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

Wyjście:

0.06127880399999999

Widzieliśmy prosty przykład, który podaje nam czas wykonania prostej instrukcji kodu = 10*5, a czas potrzebny na jej wykonanie wynosi 0.06127880399999999.

Timing Wiele linii w kodzie Pythona

Istnieją dwa sposoby wykonania wielu wierszy kodu w funkcji timeit.timeit(): rozdzielając wiersze średnikami lub umieszczając kod jako ciąg znaków w potrójnych cudzysłowach.

Oto przykłady pokazujące działanie tego rozwiązania.

Przykład 1: Użycie średnika

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

Wyjście:

The time taken is  0.137031482

Przykład 2: Używanie potrójnych cudzysłowów

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

Wyjście:

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

timeit – Metody

Oto 2 ważne metody timeit

timeit.default_timer() : Po wykonaniu zwróci domyślny czas.

timeit.repeat(stmt, konfiguracja, timer, powtórz, liczba) : tak samo jak timeit() , ale w przypadku powtórzenia funkcja timeit() jest wywoływana jako liczba powtórzeń.

Przykład programu 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))

Wyjście:

0.46715912400000004

2 przykład

default_timer() Przykład

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

Wyjście:

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

Przykład 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))

Wyjście:

 [0.43638873, 0.5040939680000001, 0.5069179909999999, 0.3943449330000002, 0.3546886979999999]

timeit.repeat() działa podobnie do funkcji timeit.timeit() z tą tylko różnicą, że uwzględnia argument powtórzenia i zwraca czas wykonania w formacie tablicy z wartościami zgodnymi z liczbą powtórzeń.

Wykonywanie funkcji pomiaru czasu timeit.timeit() w interfejsie wiersza poleceń

Składnia wykonywania funkcji wewnątrz funkcji timeit() w wierszu poleceń jest następująca:

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

Parametry wiersza polecenia:

  • -n N: ile razy chcesz wykonać kod.
  • -r N: liczba powtórzeń funkcji timeit().
  • -s S: tutaj znajdują się szczegóły konfiguracji, które zostaną wykonane przed wykonaniem kodu.
  • -t: w tym celu możesz skorzystać z funkcji time.time()
  • -c: w tym celu możesz skorzystać z time.clock()
  • -h: o pomoc
  • oświadczenie kodu: Szczegóły kodu.

Przykład

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

Inny sposób wykonania w wierszu poleceń jest pokazany poniżej:

Przykład

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

Dlaczego timeit() jest najlepszym sposobem pomiaru czasu wykonania Python kod?

Oto kilka powodów, dla których uważamy, że timeit() jest najlepszym sposobem pomiaru czasu wykonania.

  • Uruchamia instrukcję code 1 milion razy, co jest wartością domyślną, i na tej podstawie zwraca minimalny czas potrzebny. Możesz także zwiększyć/zmniejszyć 1 milion, ustawiając numer argumentu w funkcji czasu ().
  • Podczas wykonywania testu odśmiecanie jest każdorazowo wyłączane przez funkcję time().
  • timeit() wewnętrznie pobiera dokładny czas zgodnie z używanym systemem operacyjnym. Na przykład użyje time.clock() dla Windows system operacyjny i time.time() dla systemów Mac i Linux.

FAQ

timeit.timeit() uruchamia instrukcję ustaloną liczbę razy i zwraca pojedynczy całkowity czas. timeit.repeat() uruchamia cały pomiar kilka razy i zwraca listę wyników, pozwalając wybrać najlepszy.

Timeit wyłącza odśmiecanie podczas pomiaru, dzięki czemu czyszczenie tła nie zakłóca pomiaru czasu. Dzięki temu wyniki są bardziej spójne i porównywalne, a ich głównym celem jest skupienie się na czasie wykonania testowanego fragmentu kodu.

Możesz oddzielać polecenia średnikami wewnątrz ciągu stmt lub przekazać ciąg wielowierszowy za pomocą potrójnych cudzysłowów. W przypadku funkcji zdefiniuj je w pliku setup i wywołuj z stmt.

Sztuczna inteligencja może profilować kod, identyfikować wolne pętle lub kosztowne wywołania, sugerować alternatywy wektorowe lub wbudowane oraz rekomendować lepsze struktury danych.ping Programiści skupiają się na optymalizacji tam, gdzie występują największe wąskie gardła.

Tak. Biorąc pod uwagę fragment kodu i jego wyniki timeit, AI może zaproponować poprawki, takie jak wyrażenia listowe, wyrażenia generatora lub funkcje biblioteczne, a następnie ponownie uruchamiasz timeit, aby potwierdzić, że ulepszenie jest rzeczywiste.

Podsumuj ten post następująco: