以下Jsoup code 连接容器 els
中所有元素的文本:
for (Element el : els)
entireText += el.text();
在一个包含约 64 个元素的容器中,每个元素包含约 1KB(整个文本中的总和为约 64KB),这个简单的循环在典型的低端 Android 手机上大约需要 8 秒。
这种缓慢的性能有点让我吃惊,因为我的印象是 Java 编译器用 new StringBuilder(A).append(B).append 替换了像
.A + B + C
这样的表达式(C).toString()
不是这样吗?
我错过了什么?
最佳答案
This slow performance kind of surprises me because I was under the impression that Java compilers substitute expressions like A + B + C with new StringBuilder(A).append(B).append(C).toString().
因此编译器创建代码:
for (Element el : els)
entireText = new StringBuilder(entireText).append(el.text()).toString();
您需要在循环外创建 StringBuilder 并手动附加到它。
关于Java 编译器不会自动优化字符串连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11311234/