90% of Python Developers Ignore This Simple LIST Trick!!!

Aus Micropython Referenz
Zur Navigation springen Zur Suche springen

Original: https://medium.com/@kirantechblog/90-of-python-developers-ignore-this-simple-list-trick-9fc3cd16191b


Der Autor belegt, daß deque deutlich schneller arbeitet, wenn Werte am Anfang einer Liste eingefügt werden:

Ich habe den Test mit einem eigenen Programm auf einem WeAct V20 mit RP2350 nachvollzogen:

# deque_test_001.py

from collections import deque
from time import ticks_us

print(10*'-')

anzahl = 10000

start_l = ticks_us()
for i in range(anzahl):
    pass
stop_l = ticks_us()
dauer_l = stop_l-start_l
print(f'Die for-loop benötigt für {anzahl} Durchläufe {dauer_l} µs.')

numbers = [1,2,3,4,5]
start_n = ticks_us()
for i in range(anzahl):
    numbers.append(1)
stop_n = ticks_us()
dauer_n = stop_n-start_n
dauer_n -= dauer_l
print(f'Normale Liste: Anfügen von {anzahl} Werten dauert {dauer_n} µs.')

numbers = deque([1, 2, 3, 4, 5], anzahl+10)
start_d = ticks_us()
for i in range(anzahl):
    numbers.appendleft(1)
stop_d = ticks_us()
dauer_d = stop_d-start_d
dauer_d -= dauer_l
print(f'Deque Liste: Anfügen von {anzahl} Werten dauert {dauer_d} µs.')
print()
print(f'Deque ist {dauer_n-dauer_d} us schneller. Das sind {(dauer_n-dauer_d)/dauer_n*100} %.')


# Ergebnis:
>>> %Run -c $EDITOR_CONTENT

MPY: soft reboot
----------
Die for-loop benötigt für 10000 Durchläufe 24905 µs.
Normale Liste: Anfügen von 10000 Werten dauert 33341 µs.
Deque Liste: Anfügen von 10000 Werten dauert 32281 µs.

Deque ist 1060 us schneller. Das sind 3.179269 %.
>>> 

Mit dem Originalprogramm konnte ich es nicht testen, weil das nicht Micropython komatibel ist.
Zum Einen sind Datenstrukturen mit 1000000 Werten nicht möglich. Ohne Fehlermeldung funktionierte die Initialisierung nur mit max. 5000.
Zum Anderen funktioniert time.time() in Mpy anders.