Heim >Backend-Entwicklung >Golang >Wie kann ich ein großes Stück Saiten in Go effizient aufteilen?

Wie kann ich ein großes Stück Saiten in Go effizient aufteilen?

DDD
DDDOriginal
2024-12-24 17:13:14960Durchsuche

How Can I Efficiently Chunk a Large Slice of Strings in Go?

Slice Chunking in Go

Sie möchten ein Slice von etwa 2,1 Millionen Strings in gleichmäßig verteilte Stücke aufteilen. Das bereitgestellte Codesegment nutzt eine Technik, die den ersten Block dupliziert, anstatt die Zeichenfolgen gleichmäßig zu verteilen.

Die Lösung besteht darin, Protokollabschnitte an den geteilten Abschnitt anzuhängen, anstatt neue Abschnitte zu erstellen. Durch die Berechnung der Chunk-Größe basierend auf der Anzahl der CPUs und der Slice-Länge können die Protokolle gleichmäßig auf Chunks verteilt werden.

Der geänderte Code:

var divided [][]string

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

Dieser Ansatz stellt sicher, dass die Strings werden so gleichmäßig wie möglich auf die Chunks verteilt, wodurch die Leistung und die Nutzung der Systemressourcen maximiert werden.

Das obige ist der detaillierte Inhalt vonWie kann ich ein großes Stück Saiten in Go 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