首页 > 解决方案 > 将代码的测量时间添加到列表并获取最小/最大/中间/平均时间

问题描述

我想测试我的代码计时并获得代码的最小/最大/平均/中间时间,所以我使用 StopWatch 如下:

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

我想把时间加倍,这样我就可以使用列表的 min,max avg mid 函数,有没有办法做到这一点?甚至更好的解决方案?谢谢

标签: java

解决方案


您可以流式传输列表并收集汇总统计信息。这是一个使用整数流的示例。也有总结double收藏家long

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 单独访问。注意:收集器采用 aToType function来获取计算统计信息的字段。所以你需要类似的东西StopWatch::getTime或任何有意义的东西。


推荐阅读