ホームページ >バックエンド開発 >Golang >Go で文字列の大きなスライスを効率的にチャンク化するにはどうすればよいですか?

Go で文字列の大きなスライスを効率的にチャンク化するにはどうすればよいですか?

DDD
DDDオリジナル
2024-12-24 17:13:14960ブラウズ

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

Go でのスライスのチャンク化

約 210 万の文字列のスライスを均等に分散されたチャンクに分割したいとします。提供されているコード セグメントは、文字列を均等に分散するのではなく、最初のチャンクを複製する手法を利用しています。

解決策は、新しいスライスを作成するのではなく、分割されたスライスにログのスライスを追加することです。 CPU の数とスライスの長さに基づいてチャンク サイズを計算することで、ログをチャンク全体に均等に分散できます。

変更されたコード:

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

このアプローチにより、文字列がチャンク全体にできるだけ均等に分散され、パフォーマンスとシステム リソースの使用率が最大化されます。

以上がGo で文字列の大きなスライスを効率的にチャンク化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。