決定如何將大切片均勻分佈為更小的區塊可能是在 Go 中處理大型資料集時的常見任務。本文探討了一種對超過 200 萬個字串的切片進行分塊的解決方案,確保均勻分佈。
原始方法涉及確定每個區塊的起始和結束索引並將指定範圍複製到新切片中。然而,這個解決方案導致第一個區塊被複製多次,使其無效。
要解決這個問題,避免建立新切片會更有效。相反,將相關的日誌切片直接附加到劃分的切片上。這種方法可確保均勻分佈,而不會出現不必要的重複。
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]) }
此更新的解決方案將有效地將切片分成均勻分佈的較小切片,容納字串和 CPU 核心的總數,以實現最佳效能。
以上是如何有效地將包含數百萬字串的大型 Go 切片分塊以進行平行處理?的詳細內容。更多資訊請關注PHP中文網其他相關文章!