私は、高度に最適化する必要がある Android プロジェクトに取り組んでいます (これは他のアプリに組み込まれている SDK であるため、可能な限り効率的かつ小さくする必要があることは明らかです)。これまでは主に Web/サーバー開発を行ってきたので、これは私にとって比較的新しいことです。
ここで質問があります: 計算/フェッチをやり直すのではなく、値をキャッシュするのはいつ意味があるのでしょうか。明らかに、計算/フェッチに時間がかかり、使用頻度が高いほど、キャッシュの候補として適しています。しかし、キャッシュのダイナミクス/コスト/報酬は、サーバー アプリとモバイル アプリではまったく異なります。
多くの同時要求を処理する大量のメモリを備えたサーバーでは、繰り返し使用される値をキャッシュすることは理にかなっています。モバイル デバイスでは、メモリに制約があります。値が繰り返し使用される場合でも、それをキャッシュするか、再計算/再読み取りする方が効率的ですか? (ネットワーク データについて話しているのではありません。明らかにローカルにキャッシュすることでメリットが得られます。ローカル ファイルから計算または解析された値について話しているのです)
これが私が疑問に思っている例です:
if (s_pattern == null) {
s_pattern = Pattern.compile(REGEX);
}
一方で、RegEx を 1 回だけコンパイルしてキャッシュすることは理にかなっていますが、他方では、追加のメモリを使用することを正当化するために多くのメリットがあるかどうかはわかりません。
誰かが経験や洞察を持っていますか? それとも経験的なデータがありますか?