我通常使用"" + i
方便。但比較自己的表現,我認爲String.valueOf(i)
會更快。這樣對嗎?我應該使用哪一個?將String.valueOf(ⅰ)與 「」 + I或I + 「」
更新:我讀過你的答案,這裏是我可以告訴:
- 只有很小的性能差異,如果將這些代碼是一個遞歸塊內變大。
- 你沒有確切地告訴我這兩種情況的主要和基本缺點/優點。
我通常使用"" + i
方便。但比較自己的表現,我認爲String.valueOf(i)
會更快。這樣對嗎?我應該使用哪一個?將String.valueOf(ⅰ)與 「」 + I或I + 「」
更新:我讀過你的答案,這裏是我可以告訴:
- 只有很小的性能差異,如果將這些代碼是一個遞歸塊內變大。
- 你沒有確切地告訴我這兩種情況的主要和基本缺點/優點。
選擇最佳的讀數。然後,在優化任何內容之前對你的應用進行配置
始終輪廓第一(例如與VisualVM因爲你在Java編碼)。
分析和優化有許多資源。我遇到的最新的好讀是Step by Step Optimisation by Tony Albrecht。
如果表現確實變得非常重要,考慮切換到StringBuilder。
編輯:
那麼有沒有直接回答你的問題恕我直言。微基準String.valueOf(i)
對i + ""
的性能沒有多大價值。真正的答案來自對應用程序進行基準測試:它自己的複雜性和內存訪問模式決定了這一切。
這些都不是我的想法,但我買他們:stop programming like it's 1975,big O notation needs an update。
嘿,這是一個了不起的答案!不是直接問我的問題,但它是如何解決我的問題! –
我不認爲你將能夠看到任何可測量的差異。這似乎是通常所說的微(過早)優化,並且很少是一個好主意。
選擇你和你的同事找到最簡單的閱讀方法。
在數百萬遞歸的情況下,小的差異將變大。所以我需要確切地知道。 –
@ W.N。 - 這是不正確的。你只需要知道答案**如果**這將被執行數百萬次**每秒** **和** **你的應用程序**必須**運行速度很快。性能分析將爲您提供一個指示,看看這個小代碼片段是否會對性能產生重大影響。 –
我會用
Integer.toString(i)
,如果我是有可能爲它使用一個內部緩存以提高性能的整數。
雖然差異很小
'String#valueOf(int)== Integer.toString(int)' –
但是如果他在未來會變成'long'或其他類型,那將是一個不必要的麻煩。 – aioobe
沒有內部緩存。它只是一個解析。你看到了代碼嗎? –
你爲什麼不測試自己?或者調試以查看實際調用的「+」。你會驚訝;) –
'String.valueOf(i)'更好地傳達意圖imho。無論如何,如果瓶頸確實存在,那麼你真的必須對代碼進行重構 –
@Thomas Jungblut我不知道如何測試性能時間。你能給我什麼不同嗎? –