我的印象是Jsoup的API中最昂贵的方法是parse().
但我刚刚发现Document.html()可能更慢.
鉴于它Document是输出parse()(即,这是在解析之后),我发现这令人惊讶.
为什么Document.html()这么慢?
回答自己.所述Element.html()方法被实现为:
public String html() {
StringBuilder accum = new StringBuilder();
html(accum);
return accum.toString().trim();
}
Run Code Online (Sandbox Code Playgroud)
使用StringBuilder而不是String已经是一件好事了,即使对于一个相对较大的文档,使用StringBuilder.toString()也String.trim()可能无法解释它的缓慢性Document.html().
但在中间,我们的方法调用一个重载版本,Element.html(StringBuilder)它循环遍历文档中的所有子节点:
private void html(StringBuilder accum) {
for (Node node : childNodes)
node.outerHtml(accum);
}
Run Code Online (Sandbox Code Playgroud)
因此,如果文档包含许多子节点,那么它将很慢.
看看是否可以更快地实现这一点将是有趣的.
例如,如果Jsoup存储通过提供给它的原始 html 的缓存版本.当然,作为一种选择,在内存中保持向后兼容性和小占用空间.Jsoup.parse()
| 归档时间: |
|
| 查看次数: |
413 次 |
| 最近记录: |