Heim > Backend-Entwicklung > Golang > Wie kann ich ein großes Go-Slice mit Millionen von Strings für die parallele Verarbeitung effizient aufteilen?

Wie kann ich ein großes Go-Slice mit Millionen von Strings für die parallele Verarbeitung effizient aufteilen?

Linda Hamilton
Freigeben: 2024-12-24 01:49:10
Original
811 Leute haben es durchsucht

How Can I Efficiently Chunk a Large Go Slice with Millions of Strings for Parallel Processing?

Slice-Aufteilung in Go

Bei der Arbeit mit großen Datensätzen in Go kann es eine häufige Aufgabe sein, zu bestimmen, wie ein großes Slice gleichmäßig in kleinere Stücke verteilt werden kann. In diesem Artikel wird eine Lösung für die Aufteilung eines Slice mit über 2 Millionen Strings untersucht, um eine gleichmäßige Verteilung sicherzustellen.

Der ursprüngliche Ansatz bestand darin, die Start- und Endindizes jedes Blocks zu bestimmen und den angegebenen Bereich in einen neuen Slice zu kopieren. Diese Lösung führte jedoch dazu, dass der erste Block mehrmals kopiert wurde, was ihn unwirksam machte.

Um dieses Problem zu beheben, ist es effizienter, die Erstellung neuer Slices zu vermeiden. Hängen Sie stattdessen den relevanten Protokollabschnitt direkt an den geteilten Abschnitt an. Dieser Ansatz gewährleistet eine gleichmäßige Verteilung ohne unnötige Duplizierung.

chunkSize := (len(logs) + numCPU - 1) / numCPU

for i := 0; i < len(logs); i += chunkSize {
    end := i + chunkSize

    if end > len(logs) {
        end = len(logs)
    }

    divided = append(divided, logs[i:end])
}
Nach dem Login kopieren

Diese aktualisierte Lösung teilt den Slice effizient in gleichmäßig verteilte kleinere Slices auf und bietet so Platz für die Gesamtzahl der Strings und CPU-Kerne für optimale Leistung.

Das obige ist der detaillierte Inhalt vonWie kann ich ein großes Go-Slice mit Millionen von Strings für die parallele Verarbeitung effizient aufteilen?. 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