我正在编写一个应用程序,它将存储一堆附有图像的记录。我正在考虑定义 800x1067 像素(约 270 kb)大小的图像。
将这种图像存储到 SQLite 数据库中是否合理?我猜将数百条记录写入这张表。
你怎么看待这件事?
你可以(这是可以接受的),但是当我尝试这个时,我发现 SQLite 太慢了。在 SQLite 中存储图像会严重影响性能。我现在将图像存储在应用程序的 Documents 文件夹中的自定义目录结构中,并将对这些文件名的引用存储在 SQLite 中。我知道有些人很乐意将缩略图存储在 SQLite 中(即使使用缩略图图像,您也会受到性能影响,尽管这些小图像可以忽略不计),但我个人将所有图像都放在我的 Documents 文件夹中。
为了测试性能,我测试imageWithContentsOfFile
了使用加载图像与从 Core Data 读取图像并将其加载到UIImage
usingimageWithData
中,在 iPhone 4S 上从 Documents 中检索 10,000 个缩略图需要 12.988 秒,从 Core Data 中检索需要 23.743 秒。(而且,显然,如果您使用自己的NSCache
和/或imageNamed
,如果您碰巧偶尔检索相同的图像,它会更快。)虽然这是核心数据基准,但几个月前我尝试使用 sqlite(通过 FMDB)较大的图像, sqlite 和之间的差异imageWithContentsOfFile
是可观的。