ios - I/O操作性能

标签 ios swift io

我想知道 iOS 中的 I/O 操作的开销有多大。

假设我有一个应用程序可以从 url 下载图像并将其存储在设备内存中。

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

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

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

最佳答案

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

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

If your app works with a lot of files, the performance of its file-related code is very important. Relative to other types of operations, accessing files on disk is one of the slowest operations a computer can perform. Depending on the size and number of files, it can take anywhere from a few milliseconds to several minutes to read files from a disk-based hard drive.

它们还为您提供了很多减少 I/O 操作的好技巧——比如重用 NSURL 对象——您可以在编码中轻松采用这些技巧。

关于ios - I/O操作性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39386473/

相关文章:

ios - Youtube channel 的应用架构

swift - 为什么集合中 ImageView 的内容模态视图没有更改为宽高比? 。图像未显示为 200*200 单元格大小

io - Perl6 (Rakudo) - 如何处理文件中的特殊字符?

python - 如何从 csv 中读取字节作为字节?

iphone - 如何将巨大的 NSDecimal 格式化为字符串?

ios - Swift 中 AppDelegate 中的网络调用

ios - 从标签内部去除阴影

ios - viewDidLoad() 在 prepareForSegue() 完成之前被调用 : Swift

haskell - 使用 IO 列表查找?

ios - 在两个现有 View 层之间插入模糊层