90% of Python Developers Ignore This Simple LIST Trick!!!
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.