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 中国語 Web サイトの他の関連記事を参照してください。