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
Linda HamiltonOriginal
2024-12-24 01:49:10777Durchsuche

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])
}

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!

Stellungnahme:
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