開啟一個新的問題(關(guān)于聲明變量的性能問題) (問題結(jié)束)
在我們編程的過程中經(jīng)常會遇到這樣的問題。














在印象中一直認為方法二的性能好于方法一,但是差距應(yīng)該很小。但因為一位別人的回文說方法一極大的影響了性能,所以想寫個例子證明一下相差很小。例子如下:
































方法一:3300毫秒左右
方法二:4300毫秒左右
結(jié)果剛好相反,于是更改方法

































沒辦法,取得字節(jié)碼,對比



































結(jié)果是感覺還是應(yīng)該是方法二快,那為什么反而方法一快了1秒左右呢?
不得而知,現(xiàn)在我個人猜測的想法是可能有兩種情況:
1,JLS的底層定義決定的,有什么特殊的優(yōu)化?
2,因為方法二比方法一雖然少了在循環(huán)中的部分,但是引用的聲明周期反而是更長了,是否因為引用存在造成了方法二的棧操作消耗了大部分時間?
猜想一有待于JLS文檔的查閱,我會在有空的時候查詢,猜想二正在想辦法證明。
看文章的朋友,如果誰了解麻煩指點一下,是我的測試方法寫的有問題,還是別的原因,謝謝。
最后:問題已經(jīng)基本了解了原因,見回復(fù)中的討論,謝謝--daydream 的幫忙。
posted on 2007-02-11 03:26 dreamstone 閱讀(2084) 評論(27) 編輯 收藏 所屬分類: jdk相關(guān)