1

私は Java ForkJoin フレームワークを試していて、大量のデータ リストを処理するプログラムを作成しました。

データ リストのパーティションの最小数を示すために、フィールドのしきい値が常に ForkJoinTask に設定されることはよく知られています。

問題は、しきい値をどの程度大きくまたは小さくするとパフォーマンスが向上するか、または柔軟性があり、CPU またはスレッドのサポートのコア数にのみ関連するかということです。

Forkjointask などの並列計算フレームワークでのしきい値のベスト プラクティスはありますか?

4

1 に答える 1

1

閾値に決まったルールはありません。適切な数値は、配列内の要素の数 (N)、各要素の処理の種類 (Q) によって異なります (2 つの数値の単純な比較を行うと Q が低くなり、複雑な計算を行うと Q が高くなります)。

Q: スレッドの約 8 倍のタスク、または 32k の最小しきい値を生成したい (もちろん、N によって異なります)。

int temp = count / (threads << 3);
threshold = (temp < 32768) ? 32768 : temp;

count は N で、threads はスレッドの数です。

于 2015-12-30T15:33:07.697 に答える