2011-09-13 8 views
4

コレクションからオブジェクトを取得する方が速いのは何ですか?NSDictionary VS NSArray + NSPredicate:より速く/ recommentedです

a。 NSDictionaryでの検索:[dictionary objectForKey:key]; または

b。 NSArrayでの検索[NSPredicate predicateWithFormat:@"someKey like %@",someKeyValue];

いずれの場合も、コレクションを作成します。

よろしくお願いいたします。

答えて

4

よくプログラムされた辞書を想定すると、はるかに高速になるはずです。良い辞書は、ハッシュマップを使って定数時間O(1)で自分の鍵を見つけなければなりません。配列がソートされていれば、バイナリ検索を使用してO(log n)でバイナリ検索に最適化することができます。そうしないと、オブジェクトごとにO(n)演算を線形に調べなければなりません。一番良いのは、何らかの形でキーをダイレクトインデックスにして、おそらくワンタイムソートで作ることができる場合です。

+2

良い辞書はO(1)であなたの鍵を見つけるでしょう。ハッシュマップには一定時間の検索があります。 –

+0

"Good"は非常に柔軟な言葉です。ハッシュベースの辞書とツリーベースの辞書は、それぞれ異なる状況で魅力的です。 NS/CFDictionaryは通常、ハッシュベースの構造ですが、それよりも遅くなるように(CFDictionary.h参照)予約します。 –

関連する問題