頭と尻尾はくれてやる!

パソコンおやじのiPhoneアプリ・サイト作成・運営日記


Core Dataのデータを日付で高速に抽出したい

頭と尻尾はくれてやる! Core Dataのデータを日付順に高速でソートしたい
↑これに引き続き、Core Dataがらみで処理速度を測ってみました。

Core Dataでたくさんのデータがあって、NSDateクラスのdateってプロパティを持ってるというのは前回と同様。

この日付で特定の1ヶ月を抽出したいのです。
ソートじゃなくて抽出ね。
これをなんとか高速でしたい、と。

NSPredicate *predicate = [NSPredicate predicateWithFormat: @"(date >= %@ ) and (date < %@)",startDate,nextDate];
datas = [datas filteredSetUsingPredicate:predicate];

ここでstartDate,nextDateともにNSDate型で、この間のデータを抽出します。
フィルタリングの前後の時間を計測するわけですが、、、

実機だと、データ数1000個程度で940msecくらいかかったんですよ。
こりゃ、まずい。

で、なんとかしようと、各データ保存時に年月を表すようなプロパティを追加しました。
文字列型でdateYM で中身が @"201011"ってな感じで。
すると、
NSString * targetDateYM = @"201011";
NSPredicate *predicate = [NSPredicate predicateWithFormat: @"dateYMD == %d",[targetDateYM intValue]];

このようにすれば、抽出できると。

最初のdateで評価する場合だと比較の式が二つあるわけだし、かなり短時間になるんじゃなかろうかと期待したんだけど、、、

結果はほとんど変わらず(あくまでデータ数1000個程度の場合)。

日付の式の前後を入れ替えても結果は変わらず。


あっかーん!orz

<< アプリ起動時に待ってもらう時の画面  TopPage  Core Dataのデータを日付順に高速でソートしたい >>

コメント


管理者にだけ表示を許可する
 

トラックバック

トラックバックURL
http://ringsbell.blog117.fc2.com/tb.php/457-e790e38d




Copyright ©頭と尻尾はくれてやる!. Powered by FC2 Blog. Template by eriraha.

FC2Ad