Heim > Backend-Entwicklung > Golang > Go Slices: Anhängen vs. Kopieren für Deep Copy – was ist effizienter?

Go Slices: Anhängen vs. Kopieren für Deep Copy – was ist effizienter?

Mary-Kate Olsen
Freigeben: 2024-12-10 21:00:15
Original
632 Leute haben es durchsucht

Go Slices:  Append vs. Copy for Deep Copying – Which is More Efficient?

Effizientes tiefes Kopieren von Slices

In Go umfasst das Erstellen einer tiefen Kopie eines Slices die Replikation seines Inhalts an einem separaten Speicherort. Dadurch wird sichergestellt, dass sich Änderungen an einem Slice nicht auf das andere Slice auswirken.

Ein Ansatz für Deep Copy ist die Append-Funktion:

copy := append([]T{}, orig...)
Nach dem Login kopieren

Hier wird das Original-Slice-Origin angehängt ein leeres Slice, wodurch eine neue Slice-Kopie mit einem eigenen Backing-Array erstellt wird.

Eine alternative Methode verwendet die integrierte Kopie Funktion:

cpy := make([]T, len(orig))
copy(cpy, orig)
Nach dem Login kopieren

Dieser Ansatz kopiert die Elemente direkt von orig in eine neu erstellte Slice-Datei.

Beide Lösungen kopieren effektiv die Werte im Slice. Es ist jedoch wichtig zu beachten, dass, wenn das Slice Zeiger oder Strukturen mit Zeigerfeldern enthält, diese Zeigerwerte immer noch auf die gleichen Stellen wie im Original-Slice verweisen.

Ein Benchmarking der beiden Methoden führt zu einer vergleichbaren Leistung:

BenchmarkCopy     100000         24724 ns/op
BenchmarkAppend   100000         24967 ns/op
Nach dem Login kopieren

Der Assembler-Code zeigt, dass sowohl „Append“ als auch „Copy“ im Rahmen ihrer Aufgaben wahrscheinlich eine Nullfüllung des Speichers durchführen Operationen.

Letztendlich hängt die Wahl zwischen den Methoden „Anhängen“ und „Kopieren“ von individuellen Vorlieben und Leistungsaspekten ab. Bei beiden Ansätzen werden Slices jedoch effektiv tief kopiert, wodurch die Datenintegrität sichergestellt wird, wenn mit separaten Instanzen von Slice-Daten gearbeitet wird.

Das obige ist der detaillierte Inhalt vonGo Slices: Anhängen vs. Kopieren für Deep Copy – was ist effizienter?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage