iOS - 将阵列保存到磁盘所需的时间

时间:2012-03-05 06:58:43

标签: objective-c ios nsmutablearray save

我使用以下代码将NSMutableArray保存到磁盘:

[myArray writeToFile:filePath atomically:YES];

假设一个大约有400个对象的数组,有人能告诉我,通过这种方法保存是一个耗时的过程吗?目前有可能在相当快速的连续中多次保存文件(我正在尝试修复),但我想知道如果数组变得更大,这是否会在某个阶段导致问题?

亲切的问候

3 个答案:

答案 0 :(得分:1)

作为参考,iPod Touch 4闪存写入速度≈18MB / s(我使用this文章中的代码进行测量)。

您可以通过转到Xcode Organizer→设备选项卡→在您的设备中选择应用程序→您的应用程序→选择文件,然后按下载,查看设备上已保存文件的大小。

对于模拟器,请转到~/Library/Application Support/iPhone Simulator/<iOS version>/Applications/<App ID>/Documents

答案 1 :(得分:0)

这里有几件事 -

  1. 通常尝试限制I / O事务的数量。
  2. 如果您可以通过使用某种内存缓存来限制I / O.仅在需要时将缓存刷新到磁盘。
  3. 接下来为您提供I / O任务;只有一个线程写作&amp;读你的文件。如果你无法确保这一点,那么你需要实现某种文件锁定机制等。所有这些都会变得丑陋。更好的是你只需要一个线程同时写入&amp;读。这样就可以序列化任务。

答案 2 :(得分:0)

而不是写例如在每次更新数组时,为什么不保留内存中的更改,只是在applicationDidMoveToBackground或其他应用程序事件中将它们刷新到磁盘,以确保在应用程序被杀之前写入它?