我在 Jsoup 中处理的一些网页很重。“重”是指页面要么包含大量 HTML(假设页面已经下载),要么需要对同一个文档进行多次迭代(仅通过Jsoup.parse()创建一次)。
出于这个原因,我想向用户展示一个进度条,其中估计还剩多少时间。
一种方法是仅测量 HTML 的体积(以 KB 或 MB 为单位)并得出一个速度因素(不幸的是,完全取决于运行此代码的系统的速度)。
另一种方法是计算节点数?
由于这种明显的不确定性,我是在找麻烦吗?
有更好的方法来处理这个问题?
我在 Jsoup 中处理的一些网页很重。“重”是指页面要么包含大量 HTML(假设页面已经下载),要么需要对同一个文档进行多次迭代(仅通过Jsoup.parse()创建一次)。
出于这个原因,我想向用户展示一个进度条,其中估计还剩多少时间。
一种方法是仅测量 HTML 的体积(以 KB 或 MB 为单位)并得出一个速度因素(不幸的是,完全取决于运行此代码的系统的速度)。
另一种方法是计算节点数?
由于这种明显的不确定性,我是在找麻烦吗?
有更好的方法来处理这个问题?
总结到目前为止的答案:不,不可能估计或预测一块 HTML 的 Jsoup 处理时间。
原因是,除了Jsoup.parse()
耗时的组件之外,Jsoup 可以在许多平台/设备上运行,有些非常慢,有些非常快,而且 Jsoup 无法(等待)关联其处理阶段/操作及其运行的架构。
我要告诉你尝试的是:
long start = System.currentTimeInMilis();
//Processing
long end = System.currentTimeInMilis();
long timeToProcess = end - start;
但我真的认为这是没用的,因为你依赖于页面服务器、互联网速度、处理能力。有太多的事情可以预测。另外... Jsoup 选择器 API 非常快。另外..连接所需的时间是更长的等待时间。你真的无法预测。希望有帮助