频繁(5Hz)核心数据节省的性能开销

时间:2012-04-05 15:45:20

标签: objective-c ios core-data nsmanagedobject nstimeinterval

对于播放音频文件的iPhone应用程序,我正在使用一个系统来跟踪用户在他们收听的任何一集中的进度(例如,他们收听file1的第一个4:35,然后启动另一个文件,并返回到file1,它从4:35开始。)

我已经设置了一个Core Data模型来存储元数据,但是我想知道在播放过程中我能够/应该如何缓存当前位置。

目前我刚刚停留了save:调用之前用于更新时间标签和UISlider播放头的方法。该方法每隔0.2秒由NSTimerInterval调用。

0.2秒比我需要跟踪进度缓存要精确得多。无论如何,这些值都四舍五入到最接近的秒,因此每次保存的4/5基本上是多余的。

但是,鉴于这几乎是所有Core Data正在做的事情,它只是在任何给定的时间内只处理单个记录的单个值,我想知道是否更有意义来做额外的事情,不必要的保存:或者管理第二个计时器,以便不那么频繁地进行更新。

按原样,仪器报告每个事件的保存持续时间约为800,在2000年左右达到峰值。我不确定如何解释这些结果。模拟器中的实际应用程序性能似乎没有受到显着影响。

如果这种保存是如此便宜以至于保持代码复杂度低(仅管理单个计时器)是有意义的,我会保持原样,但我的直觉是,这是很多操作,无论如何便宜。

1 个答案:

答案 0 :(得分:1)

您不应该在电池消耗中看到尽可能多的性能差异。

在iOS设备中使用闪存存储器写入磁盘比在计算机上写入旋转磁盘HDD要快得多。此外,与仅仅保持电镀旋转相比,写入HDD不会花费太多电力。但是,写入闪存存储器需要相对于读取功能更多的功率,或者只是单独使用闪存。

换句话说,在iOS设备上写入的功耗不可忽略。如果你可以使用4hz,那很容易让你的应用程序的电池消耗显着改善。