main方法我改了一下发现直接for循环运算所需时间为0不知道为什么,谁能帮忙解答一下
Topic sourcepublic static void main(String[] args) throws Exception {
// 创建2000个随机数组成的数组: long[] array = new long[2000];
long expectedSum = 0;
for (int i = 0; i < array.length; i++) {
array[i] = random();
expectedSum += array[i];
}
System.out.println("Expected sum: " + expectedSum);
// fork/join: ForkJoinTask<Long> task = new SumTask(array, 0, array.length);
long startTime = System.currentTimeMillis();
Long result = ForkJoinPool.commonPool().invoke(task);
long endTime = System.currentTimeMillis();
System.out.println("Fork/join sum: " + result + " in " + (endTime - startTime) + " ms.");
startTime = System.currentTimeMillis();
long sum = 0;
for (long l : array) {
sum += l;
}
endTime = System.currentTimeMillis();
System.out.println("sum: " + sum + " in " + (endTime - startTime) + " ms.");
}
1. 我们写的实现里故意让它沉睡了一秒
2. 我们在操作里做了写语句输出等无关操作
3. 这个数量级还是不够大,我这边是把数组调整到 `2000_0000` 后实现反超
Fork / join sum: 99990549481 in 69 ms.
fori sum: 99990549481 in 94 ms.
- 1
_我若晴天便是安好