[問題] 請問在迴圈內宣告物件

作者: 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