頭と尻尾はくれてやる!

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


Core Dataのデータを日付順に高速でソートしたい

現在取り組んでいるアプリで、データ数が多くなるとページを切り替える時に一瞬遅れる。
うーん、気持ち悪い。
という状況なのでCore Dataでのデータの持ち方を再考中。

その過程で気になることがあったので実機でテストしてみました。

NSSet *datas;

ここにCore Dataから得た一連のデータが入れます。

NSArray *sortDiscriptors = [NSArray arrayWithObjects:[NSSortDescriptor sortDescriptorWithKey:@"date" ascending:YES], nil];

各データはdateってプロパティ名でNSDateクラスのデータを持っています。
このdateで日付順にソートするのが目的であります。

NSArray *datasArray = [datas sortedArrayUsingDescriptors:sortDiscriptors];

↑これでソート。
この前後で時間を実機で計測しました。

その結果、、、
1)データ数が1000個程度だと、840msec程度(こりゃ問題だ)
2)データ数が1000個程度だと、処理時間はデータのn数にほぼ比例

もしかしたら、処理時間はデータ数に対して指数関数的に増えていくのかな?
そうすると、データを分割して、、、なんて思ったんだけど、比例するんだから、1000個を1回するのと、(データの持ち方を工夫して)100個を10回するのもたいして変わらないんだろうな。
うーん、こりゃ困った。


む!
もしかしてNSDate型でソートすると、時間がかかるんじゃね?
もっとシンプルにNSInteger型だったらいいんじゃね?
なんて思って、日付を"20100101"ってNSInteger型のプロパティを持たして、比較してみたところ、、、

ほとんど変わりませんでした。

結果の追加
3)データ数が1000個程度だと、NSDate、NSIntegerのどちらでソートしても変わらなかった


あっかーん!orz

<< Core Dataのデータを日付で高速に抽出したい  TopPage  drawRect:内でUILabelオブジェクトを作ったらダメなの? >>

コメント

3年も前の記事にコメントするの意味あるか分かんないけど、インデックス貼ってないだけでは…?

2013.07.05   AknEp   編集

Re: タイトルなし

> 3年も前の記事にコメントするの意味あるか分かんないけど、インデックス貼ってないだけでは…?

えっ?使い方間違ってます?

2013.07.12   たつや   編集


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

トラックバック

トラックバックURL
http://ringsbell.blog117.fc2.com/tb.php/456-6c7b7def




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

FC2Ad