首頁 >後端開發 >Golang >如何有效地將包含數百萬字串的大型 Go 切片分塊以進行平行處理?

如何有效地將包含數百萬字串的大型 Go 切片分塊以進行平行處理?

Linda Hamilton
Linda Hamilton原創
2024-12-24 01:49:10775瀏覽

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

Go 中的切片分塊

決定如何將大切片均勻分佈為更小的區塊可能是在 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn