0

我想将图像写入我在运行时设置的文件夹。现在假设有 100 张图像,如果我将它保存在两个文件夹中,即文件夹 1 和文件夹 2 都在文档目录中。两者的编号相等。图像,即文件夹 1 中的 50 个和文件夹 2 中的剩余 50 个。接下来,我想在需要的地方获取它们。

所以我的问题是,为一半数量的图像选择两个文件夹还是为所有图像选择一个文件夹是正确的方法。哪个读写速度更快?此外,如果单个文件夹中的图像数量增加或其中包含固定数量图像的文件夹数量增加(例如 5 个文件夹每个有 100 个图像或 1 个有 500 个图像),会发生什么?

我会将这些路径保存在我的 sqlite 数据库的一个字段中。此外,我将查询此路径并显示图像,现在我只想为 iOS 设备执行此操作。谢谢。

4

2 回答 2

1

Vish,如果您已经将图像文件路径存储在您的 sqlite 文件中,那么您将存储多少文件并不重要 - 我认为 NSFileManager 不需要遍历所有文件。如果您需要检查文件,检查名称,然后才打开图像,那将是另一回事,并且您会遇到性能问题。因此,在一个文件夹中执行所有操作。如果您需要保存不同类型的图像,我建议只使用两个文件夹,比如说,用户的封面图像和个人资料图像,您将为封面创建一个文件夹,为个人资料图像创建一个文件夹。

您可以使用 Grand Central Dispatchdispatch_async来保存图像,因此您不会阻塞主线程和 UI。你可以这样做:

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{
    //save here the images
});

如果您想了解更多关于 NSFileManager 和性能提示的信息,请查看此处

于 2013-08-20T09:49:36.970 回答
0

写入两个文件夹而不是一个文件夹不太可能带来任何性能优势。NSFileManager 代码无论如何都会为您处理所有这些。您还可以使用 dispatch_async 或 NSOperationQueue 将活动保持在后台,并且不会阻塞 UI,这将为您提供更好的方式来管理性能。

如果您将路径存储在像 sqlite 这样的持久数据存储中,那么保持文件的路径尽可能简单是有意义的,因此最好使用一个文件夹。

于 2013-08-20T09:45:27.233 回答