1

画像が添付された一連のレコードを保存するアプリを作成しています。800x1067 ピクセル (約 270 kb) のサイズの画像を定義することを考えています。

この種の画像を SQLite データベースに保存するのは合理的ですか? このテーブルには何百ものレコードがあると思います。

あなたはそれについてどう思いますか?

4

1 に答える 1

4

できます (許容範囲です) が、これを試してみたところ、SQLite は遅すぎることがわかりました。SQLite に画像を保存すると、パフォーマンスが大幅に低下します。アプリの Documents フォルダー内のカスタム ディレクトリ構造に画像を保存し、それらのファイル名への参照を SQLite に保存するだけです。一部の人々が喜んでサムネイルを SQLite に保存していることは知っています (サムネイル画像を使用しても、これらの小さな画像では無視できますが、パフォーマンスが低下します) が、個人的にはすべての画像を Documents フォルダーに入れます。

パフォーマンスをテストするために、 を使用しimageWithContentsOfFileて画像をロードする場合と、Core Data から画像を読み取ってUIImageusingにロードする場合をテストしましたimageWithData。ドキュメントから 10,000 個のサムネイルを取得するのに iPhone 4S で 12.988 秒かかり、Core Data から取得するのに 23.743 秒かかりました。(そして、明らかに、独自のNSCacheおよび/またはを使用する場合、たまたま同じ画像を取得するとimageNamedはるかに高速になります。)これは確かに Core Data ベンチマークですが、数か月前に (FMDB 経由で) sqlite を使用してみました。より大きな画像では、sqlite との違いimageWithContentsOfFileはかなりのものでした。

于 2012-07-26T02:39:30.253 に答える