有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java将代码的测量时间添加到列表中,并获取最小/最大/中间/平均时间

我想测试我的代码计时并获得代码的最小/最大/平均/中间时间, 因此,我使用秒表是因为:

List<StopWatch> list = new ArrayList()<>;
stopwatch.start();
code
StopWatch passTime = stopwatch.stop();
list.add(passTime)

我想得到双倍的时间,这样我就可以使用最小,最大平均值mid函数的列表,有办法做到这一点吗?还是更好的解决方案? 谢谢


共 (1) 个答案

  1. # 1 楼答案

    您可以流式处理列表并收集summary statistics。下面是一个使用整数流的示例。还有doublelong的汇总收集器

    List<Integer> list =
                    new ArrayList<>(List.of(10, 20, 30, 40, 50));
            
    IntSummaryStatistics iss = list.stream().collect(Collectors.summarizingInt(Integer::intValue));
    System.out.println(iss);
    

    印刷品

    IntSummaryStatistics{count=5, sum=150, min=10, average=30.000000, max=50}
    

    每个值都可以通过getter单独访问。注意:收集器使用ToType function获取要计算统计信息的字段。所以你需要像StopWatch::getTime或任何有意义的东西