2

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

我已经建立了一个核心数据模型来存储元数据,但我想知道在播放期间我可以/应该多积极地缓存当前位置。

目前我刚刚坚持保存:调用以前用于更新时间标签和 UISlider 播放头的方法。NSTimerInterval 每 0.2 秒调用一次该方法。

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

不过,鉴于这几乎是 Core Data 正在做的所有事情,它只在任何给定时间处理单个记录的单个值,我想知道只做额外的、不必要的保存是否更有意义:'s,或者管理第二个计时器以减少更新频率。

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

如果这种保存非常便宜,以至于将代码复杂度保持在低水平(只管理一个计时器)是有意义的,我会保持原样,但我的直觉是,无论多么便宜,这都是很多操作。

4

1 回答 1

1

你不应该看到你在电池消耗中看到的那样大的性能差异。

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

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

于 2012-04-05T18:58:31.670 回答