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














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
































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

































沒辦法,取得字節碼,對比



































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