java - 将代码的测量时间添加到列表并获取最小/最大/中间/平均时间
问题描述
我想测试我的代码计时并获得代码的最小/最大/平均/中间时间,所以我使用 StopWatch 如下:
List<StopWatch> list = new ArrayList()<>;
stopwatch.start();
code
StopWatch passTime = stopwatch.stop();
list.add(passTime)
我想把时间加倍,这样我就可以使用列表的 min,max avg mid 函数,有没有办法做到这一点?甚至更好的解决方案?谢谢
解决方案
您可以流式传输列表并收集汇总统计信息。这是一个使用整数流的示例。也有总结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
或任何有意义的东西。
推荐阅读
- spark-streaming - 为什么火花流查询失败 java.util.concurrent.TimeoutException: Futures timed out after [5 minutes]
- sql-server - 使用自定义密钥从 mvc Web 应用程序加密数据并从 SQL Server 解密
- r - 如何防止 geom_rect 在矩形之间添加水平像素线?
- javascript - 如何使用 javascript 获取显示 .intro none 和 .q1 块的按钮?
- php - Magento 设置页面重定向到另一个 url
- python - pyglet 或 pygames 可以在表面 + 播放器内显示两部电影
- vuejs2 - 将图像拖放到画布(vue.js)
- c# - Blazor Wasm .Net 5 - 实现个人用户帐户和 Azure AD 身份验证
- java - Google Drive API files.list 不刷新
- python - PyQt5 Thread 退出时关闭 GUI