多数据串行和并行的执行时间比较java代码
时间: 2023-10-19 11:07:25 浏览: 82
Java多线程编程的多线程编程中的挑战.docx
下面是一个简单的示例 Java 代码,用于比较多数据串行和并行执行时间的差异:
```java
import java.util.ArrayList;
import java.util.List;
public class Main {
// 定义一个计算函数,用于计算一个数的平方
public static int calculateSquare(int n) {
try {
Thread.sleep(1000); // 模拟计算过程
} catch (InterruptedException e) {
e.printStackTrace();
}
return n * n;
}
// 串行执行计算任务
public static void serialExecution() {
long startTime = System.currentTimeMillis();
List<Integer> input = new ArrayList<>();
for (int i = 0; i < 10; i++) {
input.add(i);
}
List<Integer> output = new ArrayList<>();
for (int i : input) {
int result = calculateSquare(i);
System.out.println("Result " + i + ": " + result);
output.add(result);
}
long endTime = System.currentTimeMillis();
System.out.println("Serial execution time: " + (endTime - startTime) / 1000.0 + " seconds");
}
// 并行执行计算任务
public static void parallelExecution() {
long startTime = System.currentTimeMillis();
List<Integer> input = new ArrayList<>();
for (int i = 0; i < 10; i++) {
input.add(i);
}
List<Integer> output = new ArrayList<>();
input.parallelStream().forEach(i -> {
int result = calculateSquare(i);
System.out.println("Result " + i + ": " + result);
output.add(result);
});
long endTime = System.currentTimeMillis();
System.out.println("Parallel execution time: " + (endTime - startTime) / 1000.0 + " seconds");
}
public static void main(String[] args) {
serialExecution();
parallelExecution();
}
}
```
在这个示例代码中,我们定义了一个 `calculateSquare` 函数,用于计算一个数的平方。我们用一个 `for` 循环来计算 0 到 9 的整数的平方,然后比较串行和并行执行这个计算任务的时间。
在串行执行函数 `serialExecution` 中,我们按照顺序依次计算每个数的平方,因此总时间为 10 秒。
在并行执行函数 `parallelExecution` 中,我们使用了 Java 8 中的 `parallelStream` 方法来并行执行计算任务。我们将输入数据转换为一个流,并使用 `forEach` 方法来对每个数并行执行计算任务。因为我们使用了并行流来并行执行任务,因此总时间只需要 1 秒左右。
通过比较串行和并行执行的时间,我们可以看到并行执行可以大大提高任务的执行效率。需要注意的是,并行执行需要一定的额外开销,因此在小规模数据处理时,串行执行可能更为高效。
阅读全文