web-dev-qa-db-ja.com

Java 8's parallelSortを使用しない理由はありますか?

私は この質問 を読んでいましたJavaの違いについて Arrays.sort および Arrays.parallelSort 、これは数年前のことです。私を驚かせたのは、parallelSortを使用することの欠点について言及した質問が1つしかなかったことです。つまり、CPUを大量に使用していると、スピードアップが低下します。

ある種の特殊なシングルスレッド環境を使用していないと想定すると、常に常にparallelSort?しない理由はありますか?上記の質問への回答の1つでは、要素数が4096未満の場合、parallelSortはとにかくsortを呼び出すだけであることに言及しています。

52
Calvin Godfrey

一般的なプールの使用状況や最適化可能な最小サイズなどの理由に加えて、並べ替えを並行して実行する必要がある多くのトランザクションがある場合は、単一の並べ替えを並列化する必要がない場合もあります。

そのシナリオでは、作業パッケージを分割することでオーバーヘッドを回避できます。 (ただし、構成可能な並列処理を備えた制御可能なエグゼキューターがあれば、マルチスレッド送信でも機能します。パークされたスレッドとコンテキストスイッチの数を増やすだけです)

0
eckes