缓存与重新计算

时间:2014-10-20 01:20:19

标签: android performance caching mobile

我正在建立一个跟踪共同基金业绩的Android应用。该应用程序允许您创建一个投资组合来添加您的资金。

这是一个共同基金应用程序(而不是股票应用程序),它获取更新的基金"价格" (每股资产净值)每天一次并重新计算投资组合(当前价值,当前收益率[+/-])。这个"刷新"操作很昂贵,因为它消耗数据和大量的CPU周期。

投资组合XML仅包含用户输入的"静态"数据:

  • 投资组合中的资金
  • 投资基金(购买多少股票及何时购买)

所有计算的"动态"数据不会在任何地方保留。理由是这些数据在不同情况下发生变化(获得更新基金价格,增加新投资等)。

因此,当用户启动应用程序时,应用程序从XML文件中读取静态数据,读取最新的FUND PRICES(从DB或Web Service),然后重新计算所有内容。这需要相当长的时间。

问题:

在移动开发这个勇敢的新世界中,人们期待应用程序的快速响应,是否是一个新的"最好的"练习缓存动态数据而不是每次需要时重新计算它?

我应该缓存动态数据以使某些操作平稳而快速,还是应该每次都重新计算?

谢谢!

2 个答案:

答案 0 :(得分:1)

在我知道有必要之前,我不喜欢缓存,因为重新计算不太容易出错。所以首先我会在耗时的执行阶段通过this technique进行性能调优。我认为进行性能调优要比通过缓存来复杂化程序容易得多,特别是当我甚至没有积极的时候它会有很大的帮助。

但是在你进行性能调整之后,你可以看到重新计算仍然是主要的时间接受者,那么是的,做缓存。

答案 1 :(得分:0)

您绝对应该在必要时缓存数据。您可以考虑使用SoftReferences,因为只要有可用内存并且在即将耗尽内存之前收集垃圾,它们就会被保留。 您也可以考虑今天的智能手机比一些个人电脑拥有更多的资源。