は、私は以下の持っているString s
の宣言をループの外に移動された場合に任意の違いを確認ループ内にオブジェクト宣言を置くとパフォーマンスが低下しますか?
for (i = 1..100000) {
String s = make_some_string(i); // this function depends on `i` only
output_this_result(s);
}
うスニペットと仮定しますか?私は、コンパイラが各ループの文字列オブジェクトを構築して破壊しないほど賢明だと思います。しかし、それはの代わりに、string
のように複雑なものでしたか?
テストしてください。生成されたasmを見てください。 –
コンパイラは十分にスマートですが、テストが必要だと思います。 –
新しい文字列が生成され、 'make_some_string()'によって割り当てられ、後で各繰り返しで破棄されます。あなたは両方の試みの違いを測定しようとしましたか?あなたは何を観察しましたか? – moooeeeep