Sou*_*per 3 java optimization performance stringbuilder jsoup
以下Jsoup代码连接容器中所有元素的文本els:
for (Element el : els)
entireText += el.text();
Run Code Online (Sandbox Code Playgroud)
在一个包含~64个元素的容器中,每个元素包含~1KB(整个文本总共约为64KB),这个简单的循环在典型的低端Android手机上大约需要8秒.
这种缓慢的性能样的惊喜我,因为我的印象是,Java编译像替代表情下A + B + C用new StringBuilder(A).append(B).append(C).toString().
那不是这样吗?
我错过了什么?
Mic*_*mlk 12
这种缓慢的性能令我感到惊讶,因为我的印象是Java编译器用新的StringBuilder(A).append(B).append(C).toString()替换A + B + C这样的表达式.
所以编译器创建代码:
for (Element el : els)
entireText = new StringBuilder(entireText).append(el.text()).toString();
Run Code Online (Sandbox Code Playgroud)
您需要在循环外创建StringBuilder并手动附加到它.