首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >缓存收益:移动开发与服务器开发

缓存收益:移动开发与服务器开发
EN

Stack Overflow用户
提问于 2012-04-19 23:48:14
回答 1查看 70关注 0票数 2

我正在做一个需要高度优化的Android项目(它是一个嵌入到其他应用程序中的SDK,所以很明显,我们希望它尽可能的高效和小巧)。这对我来说是相对较新的,因为在过去,我主要从事web/服务器开发。

所以这里有一个问题:什么时候缓存值才有意义,而不是再次计算/获取。显然,计算/获取花费的时间越长,使用频率越高,缓存就越好。但缓存的动态/成本/回报在服务器应用程序和移动应用程序中是完全不同的。

在具有大量内存的服务器上,缓存重复使用的值是有意义的。在移动设备上,内存是有限的。即使一个值被重复使用,缓存它还是重新计算/重新读取更有效?(我不是在谈论网络数据,这显然可以从本地缓存中受益。我更多地讨论的是从本地文件计算或解析的值)

这是一个我一直想知道的例子:

代码语言:javascript
复制
if (s_pattern == null) {
    s_pattern = Pattern.compile(REGEX);
}

一方面,对我来说,只编译一次RegEx并缓存它是有意义的,但另一方面,我不确定是否有很多好处值得使用额外的内存。

有没有人有经验或见解?或者你有经验数据吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-20 00:20:30

if (s_pattern == null) { s_pattern =Pattern.compile(正则表达式);}

这是一个很好的保持常量([private|public|] static final PATTERN)的候选方法,如果它从不改变,并且在使用定义类时总是使用它。

如果您保留其中的几个或其他“小”对象,应该不会出现问题。如果您每次都要重新创建它们,那么您甚至可以使用更多的内存,因为您可以在内存中拥有该对象的多个实例-垃圾收集不会立即删除。此外,持续不断的对象重建将耗费您的CPU时间,这在移动设备上也是有限的。

只要有可能,我更喜欢缓存而不是娱乐。例外的是像位图这样占用几百千字节的大对象。

你在Android上看到的几乎所有内存问题都与故意缓存无关,而是与无意泄漏或滥用大图片有关。

顺便说一句:这不是基于经验数据--但如果你检查一下导致这些的原因,你可能会得到一些:[android]+OutOfMemoryException

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10231838

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档