【发布时间】:2012-07-03 21:00:05
【问题描述】:
以下Jsoup代码将容器els中所有元素的文本连接起来:
for (Element el : els)
entireText += el.text();
在具有约 64 个元素的容器上,每个元素包含约 1KB(整个文本总计约 64KB),这个简单的循环在典型的低端 Android 手机上大约需要 8 秒。
这种缓慢的性能让我感到惊讶,因为我的印象是 Java 编译器会用 new StringBuilder(A).append(B).append(C).toString() 替换像 A + B + C 这样的表达式。
不是这样吗?
我错过了什么?
【问题讨论】:
-
你比较了这两个选项还是只是猜测字符串连接是你问题的根本原因?
-
@home 当然我比较过。 StringBuilder 选项在 不到 1 秒内完成。
-
javac编译器几乎不做任何优化。即使使用 JIT,它也不会对这段代码进行太多优化。开发人员需要知道这真的很有效。
标签: java performance optimization jsoup stringbuilder