Java7 ForkJoinTask中哪个阈值数会更好

时间:2015-12-30 07:37:15

标签: java threshold fork-join forkjoinpool

我正在尝试Java ForkJoin框架并编写了一个程序来处理大型数据列表。

众所周知,字段阈值始终在ForkJoinTask中设置,以指出数据列表分区的最小数量。

问题是,阈值的大小会产生更好的性能,还是灵活的,只与核心数量的CPU或线程支持相关联?

并行计算框架中的阈值是否有最佳实践,例如Forkjointask?

1 个答案:

答案 0 :(得分:1)

阈值没有设定规则。一个好的数字取决于数组中元素的数量(N),每个元素的处理类型(Q)(做两个数字的简单比较是一个低Q,做一个复杂的计算是一个高Q.)< / p>

我使用的通用公式在大多数情况下都运行得相当好,我不总是知道Q:我想生成大约8倍于线程的任务或最小阈值32k(当然取决于N. )

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

其中count是N,thread是线程数。