我正在开发一个需要高度优化的 Android 项目(它是一个嵌入在其他应用程序中的 SDK,因此显然我们希望它尽可能高效和小型)。这对我来说相对较新,因为过去我主要进行 Web/服务器开发。
所以这里的问题是:什么时候缓存值而不是重新计算/获取有意义。显然,计算/获取所需的时间越长,使用的频率越高,缓存的候选对象就越好。但是缓存的动态/成本/回报在服务器应用程序中与在移动应用程序中完全不同。
在具有大量内存且同时服务于许多请求的服务器上,缓存重复使用的值是有意义的。在移动设备上,内存是有限的。即使重复使用一个值,缓存它还是重新计算/重新读取更有效?(我不是在谈论网络数据,这显然可以从本地缓存中受益。我更多地谈论从本地文件计算或解析的值)
这是我一直想知道的一个例子:
if (s_pattern == null) {
s_pattern = Pattern.compile(REGEX);
}
一方面,对我来说只编译一次 RegEx 并对其进行缓存是有意义的,但另一方面,我不确定是否有很多好处可以证明使用额外内存是合理的。
有没有人有任何经验或见解?或者你有经验数据吗?