[英]How to improve performance (paralellization or other ideas) calculation of multiple stats of array max, min, mean and std dev?
这是这篇文章<\/a>的延续。 我必须多次计算数组的一些统计数据(最大值、平均值、最小值、中值和标准偏差),并且在方法 calcMaxMinMedian 中给定我的数组类型时,我遇到了性能问题。
鉴于此,我无法进一步改进阵列性能的汇总统计数据。 我现在正在尝试理解策略和变通方法,以并行化我的上司或任何其他聪明的想法。
我看过这个文档<\/a>,但我不熟悉以及这个(帖子)[https:\/\/stackoverflow.com\/questions\/20375176\/should-i-always-use-a-parallel-stream-when-possible\/20375622] .
我尝试使用并行流,但可能考虑到我的 SharedResource,使用 for 循环的实际性能更差。
Time (s) functionUsingForLoop173
Time (s) functionUsingParallelStream194
您的部分问题是您正在计算测试中的随机数据样本,但与并行线程中的单例随机数生成存在争用。 这也意味着您无法验证并行算法是否与串行结果匹配。
重构您的测试,以便预先计算一次输入 - 您不关心此步骤的时间安排:
private double[][] generateInputData(int numVals, int numCalculations) {
// calculations that is used to get some values, but is not modified.
double[][] inputs = new double[numCalculations][];// Each
for (int i = 0; i < numCalculations; i++) {
inputs[i] = functionSimulateCalculations(numVals);
}
return inputs;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.