java - 使用可变运行时间估计剩余时间
问题描述
我有一个 Java 项目正在抓取大量 HTML,我想显示剩余时间的估计值。
我想我可以在每个循环的开始和结束时获取时间(以毫秒为单位),然后减去以获得运行的总时间。然后我想我确切地知道我需要跑多少次,所以我可以乘以它来获得总的估计时间。
然后对于剩余的估计时间,我可以保持运行总时间并从总估计时间中减去。
问题是我的输出似乎是负数......?
当前页面++;long timeend = System.currentTimeMillis();
// Calculate Time
long runtime = timestart - timeend;
long timetotal = 0;
timetotal = timetotal + runtime;
long averagetime = timetotal / CurrentPage;
long timeestimated = averagetime * totalpages;
long timeremaining = timeestimated -timetotal;
String RunTime= String.format("%d min, %d sec", TimeUnit.MILLISECONDS.toMinutes(runtime), TimeUnit.MILLISECONDS.toSeconds(runtime));
String AverageTime=String.format("%d min, %d sec", TimeUnit.MILLISECONDS.toMinutes(averagetime), TimeUnit.MILLISECONDS.toSeconds(averagetime));
String TimeEstimated=String.format("%d min, %d sec", TimeUnit.MILLISECONDS.toMinutes(timeestimated), TimeUnit.MILLISECONDS.toSeconds(timeestimated));
String TimeRemaining=String.format("%d min, %d sec", TimeUnit.MILLISECONDS.toMinutes(timeremaining), TimeUnit.MILLISECONDS.toSeconds(timeremaining));
System.out.println("Page " + CurrentPage +" completed");
System.out.println("Current Runtime = " + RunTime);
System.out.println("Average Runtime = " + AverageTime);
System.out.println("Estimated time = " + TimeEstimated);
System.out.println("Estimated time remaining = " +TimeRemaining);
我的输出如下所示:
Page 9 completed
Current Runtime = 0 min, -3 sec
Average Runtime = 0 min, 0 sec
Estimated time = 0 min, -3 sec
Estimated time remaining = 0 min, 0 sec
Page 10 completed
Current Runtime = 0 min, -3 sec
Average Runtime = 0 min, 0 sec
Estimated time = 0 min, -3 sec
Estimated time remaining = 0 min, 0 sec
Page 11 completed
Current Runtime = 0 min, -4 sec
Average Runtime = 0 min, 0 sec
Estimated time = 0 min, -3 sec
Estimated time remaining = 0 min, 0 sec
所以我显然做错了什么,但不能完全弄清楚它是什么。当我运行 10 个循环时,当前运行时间加起来为 20 秒,而构建/运行时间为 27 秒......所以我很茫然。
解决方案
推荐阅读
- sql - 同一个维度根据特定标准有不同的值时,如何实现维度表设计?
- c - `realloc(): invalid next size` 尝试处理未知大小的输入
- css - 不需要的边界半径伪影,带有框阴影扩散
- python - 用重叠词连接输入句子
- javascript - 在 Next.js 中动态获取 SVG 图标
- java - 压缩具有相同 id 的行
- django - Django Rest Framework:将值附加到 ListAPIView
- php - 如何从 MySQL 中的另一个表中获取数据?
- javascript - 选中的框不会在 md-table 中保持选中状态
- c# - 将 2 个查询的结果添加到单个列表中,然后对其进行排序