我正在研究一個需要高度優化的Android項目(這是一個嵌入其他應用程序的SDK,所以顯然我們希望它儘可能高效和小巧)。這對我來說是比較新的,因爲在過去,我主要完成了Web /服務器開發。緩存支出:移動服務器與服務器開發
所以,這裏是一個問題:什麼時候緩存數值而不是重新計算/讀取有意義。很顯然,計算/獲取所花費的時間越長,使用越頻繁,就越有可能用於緩存。但是,緩存的動態/成本/回報在服務器應用上與在移動應用中完全不同。
在服務器有很多內存的服務器正在提供多個同時請求時,緩存重複使用的值是有意義的。在移動設備上,內存受到限制。即使重複使用一個值,緩存它還是重新計算/重新讀取效率更高? (我不是在談論網絡數據,這顯然可以從本地緩存中受益,我更多地談論從本地文件計算或分析值)
這裏是我一直想知道的例子:
if (s_pattern == null) {
s_pattern = Pattern.compile(REGEX);
}
一方面,對我來說只有一次編譯RegEx並緩存RegEx是有意義的,但另一方面我不確定是否有很多值得證明使用額外的內存是正確的。
有沒有人有任何經驗或見解?或者你有經驗數據?
+1「你有沒有經驗數據?」這是正確的問題。 – 2012-04-19 16:23:13
您可以使用SoftReference(s)作爲您的緩存對象。如果內存緊張,這些對象將被收集,否則它們將有助於性能。 – Stefan 2012-04-19 17:27:02