研究室でちょっぴり話題(Javaのが)になってたので他の言語でも(自分の使ってる範囲で)調べてみた。
言語 | 新規オブジェクト | 破壊的メソッド(? | 備考 |
C++ | | std::string += | 参照じゃない |
Java | String += | StringBuffer / StringBuilder #append | StringBuilderは1.5以降 |
C# | string += | StringBuilder.Append | |
D | | char[] ~= | ただの配列の連結 |
Perl | | .= | 参照じゃない |
Ruby | += | << | |
ちなみに Java += は C# += や Ruby += と比べても段違いに時間かかってました(というか止めた。
PerlとかC++がメインだった人間にとってはあまり意識しなくても生きて来れたって結論。