2016-09-08 57 views
3

我想知道iOS中I/O操作的成本有多高。I/O操作性能

假设我有应用程序从urls下载图像并将其存储在设备内存中。

下载当然是异步的,但我想知道如何在设备内存中存储数据以及如何从内存中接收数据。

有很多小图像(缩略图),但我也存储大图像(1-2 MB)。

我应该在后台线程上异步执行写入和读取操作,否则,如果我在主线程上执行写入和读取操作,它不会对性能产生太大影响。

回答

2

由于您已经异步下载图像,因此您也不难以异步存储它们。我会说这是一个最佳实践,因为它与UI的东西无关,所以它不应该在主线程上。

看看这个doc from Apple。他们没有具体说存储文件应该在后台线程上完成,但是他们承认,当你有很多文件时(当我们谈论图像时更是这样),它可能是一个非常昂贵的操作。)

如果您的应用使用大量文件,其 文件相关代码的性能非常重要。相对于其他类型的 操作,访问磁盘上的文件是计算机可以执行的最慢操作之一。根据文件的大小和数量,它可以从几毫秒到几分钟的时间从基于磁盘的硬盘读取 文件。

他们也给你很多好的建议,以减少I/O操作 - 比如重用的NSURL对象 - 你可以在你的编码很容易采纳。