[英]Is chain of StringBuilder.append more efficient than string concatenation?
[英]Should StringBuilder.append() be always preferred than concatenation?
我有一些這樣的代碼:
StringBuilder rgba = new StringBuilder();
for (...){
....
rgba.append(value + ", ");
}
IntelliJ
向我顯示以下警告:
string concatenation as argument to 'stringbuilder.append()' call
從這里、 這里和其他來源,我了解到連接實際上是創建一個新的 String object 並且否定了使用StringBuilder
的全部意義。
所以IntelliJ
建議我使用
rgba.append(value);
rgba.append(", ");
代替
rgba.append(value + ", ");
但這真的會更好嗎?
這段代碼會更清晰嗎?
這會使執行更快嗎?
根據 IntelliJ 推理:
報告用作 StringBuffer.append()、StringBuilder.append() 或 Appendable.append() 參數的字符串連接。 這樣的調用可以有利地轉化為對現有 StringBuffer/Builder/Appendable 的鏈式 append 調用,從而節省額外分配 StringBuffer/Builder 的成本。 此檢查忽略編譯時評估的字符串連接,當轉換為鏈式 append 調用時,只會降低性能。
所以,我會說: go !
你所說的是正確的,因為連接和StringBuilder
的混合在理論上違背了使用它的觀點,但是我們正在談論的額外性能非常小,除非你的循環有大量的迭代.
就代碼清晰度而言,我認為雙append
實際上更清晰,因為無論如何您都在使用它。
我會看到這兩個陳述
Append ", " appended on "value"
Append "value"
Append ", "
其中第二個實際上看起來更簡潔,即使代碼在技術上更長。
在我看來,串聯對於開發人員來說更具可讀性,但 StringBuilder.append 是高性能的
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.