假设我有以下代码段将对象声明放入循环中会有性能损失吗?
for (i = 1..100000) {
String s = make_some_string(i); // this function depends on `i` only
output_this_result(s);
}
会,使任何区别如果String s
的声明外循环感动?我猜编译器足够聪明,不要在每个循环中构造和破坏字符串对象。但如果它是一个复杂的定制object
,而不是string
?
测试它。看看生成的asm。 –
我认为编译器足够聪明,但需要测试。 –
可见,一个新的字符串是由'make_some_string()'产生和分配的,并且随后在每次迭代时都会被销毁。你是否尝试测量两种尝试的差异?你观察到了什么? – moooeeeep