gpt4 book ai didi

java - 如何处理重复测试的持续时间并计算其平均时间

转载 作者:行者123 更新时间:2023-12-01 23:04:32 25 4
gpt4 key购买 nike

根据此主题:Collectors.mapping vs conventional Stream.map

我决定进行自己的临时测试用例,以找出 Collectors.mappingStream.map 操作之间的大致性能差异。与上述相关,我创建了两个辅助方法,它们将为我的假容器提供稳定数据。

  private List<Employee> dataStab() {
List<Employee> employees = new ArrayList<>();

for (int i = 0; i < 10000000; i++) {
Employee employee = randomizeEmployeeParam();
employees.add(employee);
}
return employees;
}

private Employee randomizeEmployeeParam() {

return
new
Employee(
"Employee" + rand.nextInt(3000),
rand.nextInt(50),
1000 + (10000 - 1000) * rand.nextDouble());
}

我创建了两个测试,分别执行Collectors.mappingStream.map 操作。

  @RepeatedTest(10)
void collectorsMapping() {
Instant start = Instant.now();
List<String> strings = employeeService.collectorsMapping(dataStab());
Instant finish = Instant.now();
long timeElapsed = Duration.between(start, finish).toMillis();
System.out.println(timeElapsed);
assertEquals(10000000, strings.size());
}

@RepeatedTest(10)
void streamMapAndCollect() {
Instant start = Instant.now();
List<String> mapAndCollect = employeeService.streamMapAndCollect(dataStab());
Instant finish = Instant.now();
long timeElapsed = Duration.between(start, finish).toMillis();
System.out.println(timeElapsed);
assertEquals(10000000, mapAndCollect.size());
}

测试到目前为止有效,但现在我想根据 IntelliJ 运行窗口中的结果手动计算这些测试的平均时间。此外,从长远来看,如果我增加 @RepeatedTest 参数来计算最接近的结果,这将有点乏味。我想知道是否可以处理持续时间参数timeElapsed并计算n次重复测试的平均值。

最佳答案

如果我理解正确的话,您正在尝试对执行相同操作的两种不同方法进行基准测试。
基准测试执行起来可能很棘手,尤其是在确保测试期间条件保持不变时。
例如,JVM 可能在一段时间后开始优化某些操作。
这种测试的最佳工具可能是 JMH ( https://openjdk.java.net/projects/code-tools/jmh/ )。

关于java - 如何处理重复测试的持续时间并计算其平均时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58408090/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com