在Java7 ForkJoinTask中,阈值的数量会更好



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

众所周知,ForkJoinTask中总是设置字段阈值,以指出数据列表分区的最小数目。

问题是,阈值的大小将使性能更好,或者是否灵活且仅与CPU或线程支持的核心数量相关?

在Forkjointsask这样的并行计算框架中,是否有阈值的最佳实践?

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

当我不总是知道Q时,我使用一个通用公式,它在大多数时候都很有效:我想生成大约8倍于线程的任务,或者32k的最小阈值(当然取决于N)

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

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

相关内容

  • 没有找到相关文章

最新更新