Heim >Backend-Entwicklung >Golang >Wie kann ich ein großes Stück Saiten in Go effizient aufteilen?
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!