以下Jsoup代碼連接的所有元素的文本在容器els
:Java編譯器不會自動優化字符串連接嗎?
for (Element el : els)
entireText += el.text();
在一個容器以〜64個元素,每個包含〜1KB(在entireText爲〜64KB共計),這個簡單的循環需要大約典型的低端Android手機上8秒。
這種性能低下讓我感到驚訝,因爲我的印象是Java編譯器用A + B + C
和new StringBuilder(A).append(B).append(C).toString()
替代表達式。
是不是這樣?
我錯過了什麼?
你比較了兩個選項還是隻是猜測字符串連接是問題的根源? – home
@home當然我比較。 StringBuilder選項在**不到1秒**內完成。 – Souper
'javac'編譯器幾乎沒有優化。即使使用JIT,它也不會優化這些代碼。開發人員需要知道這是非常有效的。 –