Heim >Backend-Entwicklung >Golang >Arrays vs. Slices: Was bietet einen schnelleren Elementzugriff?
Array vs. Slice: Zugriffsgeschwindigkeit
Es wird oft angenommen, dass Arrays beim Zugriff auf Elemente schneller sind als Slices. Benchmarking-Tests zeigen jedoch ein überraschendes Ergebnis: Lokale Slices übertreffen lokale Arrays.
Der Test testete vier Funktionen: Zugriff auf globale und lokale Slices und Arrays. Bei der Analyse der Ergebnisse waren globale Slices tatsächlich etwas langsamer als globale Arrays, was den Erwartungen entsprach. Lokale Slices übertrafen jedoch lokale Arrays deutlich.
Grund
Bei der Untersuchung der amd64-Assembly sowohl auf lokale Array- als auch auf Slice-Benchmark-Funktionen fällt ein bemerkenswerter Unterschied auf. Die Array-Version lädt die Adresse des Arrays während Array-Zugriffsvorgängen wiederholt in den Speicher, während die Slice-Version nach einmaligem Laden aus dem Speicher Berechnungen ausschließlich für Register durchführt.
Fazit
Dies weist darauf hin, dass der zusätzliche Schritt beim Zugriff auf Elemente eines Slice (durch Dereferenzierung des zugrunde liegenden Arrays) keinen wesentlichen Engpass für lokale Variablen darstellt. In diesem Szenario bieten Slices aufgrund der effizienteren Nutzung von Registern einen schnelleren Zugriff. Es ist erwähnenswert, dass dieses Ergebnis möglicherweise nicht für große Arrays oder Slices gilt oder wenn es als Funktionsargumente übergeben wird.
Das obige ist der detaillierte Inhalt vonArrays vs. Slices: Was bietet einen schnelleren Elementzugriff?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!