[问题] 请问在循环内宣告物件

楼主: mamasom (mimi)   2016-11-09 23:09:35
请问一下
假设代码如下两段
1.
for(int i=0;i<10000;i++){
User user = new User();
...
}
2.
User user = null;
for(int i=0;i<10000;i++){
user = new User();
...
}
在执行上的效能会有差吗?
先不论new Object产生的多寡
单纯宣告的写法来说,只宣告一次与宣告一万次
是不是已第二点来说比较好呢?
谢谢
作者: pttworld (批踢踢世界)   2016-11-09 23:16:00
百万级数人有感。问题是new。
作者: d1288999 (Davis)   2016-11-10 00:40:00
其实没有差,compiler会帮你优化,可看class档
作者: LPH66 (-6.2598534e+18f)   2016-11-10 00:40:00
宣告没差, 因为实际编译之后变量位置都预先留好了所以这两种方式的差别就只是 user 这边数外面看不看得到这变量*
作者: ssccg (23)   2016-11-10 09:10:00
宣告只是编译时留位置,在执行期有差的是 new宣告区域变量在执行期只是method call时stack frame大一点在同个method中放在什么地方都一样在method的stack frame
作者: swpoker (swpoker)   2016-11-10 09:47:00
大量就有差~head会爆heap拉
作者: adrianshum (Alien)   2016-11-11 10:34:00
楼上:op 问是两种方式有没差。会爆heap的情况两者都会。

Links booklink

Contact Us: admin [ a t ] ucptt.com