Warum ist [] schneller als list ()?
Ich habe kürzlich die Verarbeitungsgeschwindigkeiten von @ vergliche[]
undlist()
und war überrascht zu entdecken, dass[]
renntmehr als dreimal schneller alslist()
. Ich habe den gleichen Test mit{}
unddict()
und die Ergebnisse waren praktisch identisch:[]
und{}
beide dauerten ungefähr 0,128 Sekunden / Million Zyklen, währendlist()
unddict()
dauerte jeweils ungefähr 0,428 Sekunden / Million Zyklen.
Warum ist das? Tun[]
und{}
(und wahrscheinlich()
und''
auch) geben sofort eine Kopie eines leeren Aktien-Literal zurück, während ihre explizit genannten Gegenstücke list()
, dict()
, tuple()
, str()
) erstelle ein Objekt, ob sie tatsächlich Elemente haben oder nicht?
Ich habe keine Ahnung, wie sich diese beiden Methoden unterscheiden, aber ich würde es gerne herausfinden. Ich konnte in den Dokumenten oder auf SO keine Antwort finden, und die Suche nach leeren Klammern erwies sich als problematischer als erwartet.
Ich habe meine Timing-Ergebnisse durch Aufrufen vontimeit.timeit("[]")
undtimeit.timeit("list()")
, undtimeit.timeit("{}")
undtimeit.timeit("dict()")
, um Listen bzw. Wörterbücher zu vergleichen. Ich verwende Python 2.7.9.
Ich habe kürzlich entdeckt "Warum ist True langsamer als 1? "vergleicht die Leistung vonif True
zuif 1
und scheint ein ähnliches Szenario im wörtlichen oder im globalen Sinne zu behandeln. vielleicht ist es auch eine Überlegung wert.