问题描述
此处,此方法以一个函数和一个long作为参数。将功能应用10次 该方法的long值,记录每次执行所花费的时间(以毫秒为单位),以及 返回最快的持续时间。
static long measure(Function<Long,Long> adder,long n) {
long fastest = Long.MAX_VALUE;
for (int i = 0; i < 10; i++) {
long start = System.nanoTime();
long sum = adder.apply(n);
long duration = (System.nanoTime() - start) / 1_000_000;
System.out.println("duration: " + duration);
if (duration < fastest) fastest = duration;
}
return fastest;
}
static long parallelSum(long n) {
return LongStream.rangeClosed(1,n)
.parallel()
.reduce(Long::sum)
.getAsLong();
}
System.out.println("sum done in: "+ measure(Myclass::parallelSum,10_000_000)+ " msec")
我得到以下结果:
duration: 64
duration: 2
duration: 2
duration: 2
duration: 2
duration: 2
duration: 2
duration: 2
duration: 2
duration: 2
sum done in 2 msec
我的问题是,为什么第一次调用方法parallelSum
的持续时间总是比下一个更长?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)