NSDictionary VS NSArray+NSPredicate:哪个更快/推荐
Posted
技术标签:
【中文标题】NSDictionary VS NSArray+NSPredicate:哪个更快/推荐【英文标题】:NSDictionary VS NSArray+NSPredicate: which is faster/recommented 【发布时间】:2011-09-13 20:27:26 【问题描述】:从集合中获取对象的速度更快?
一个。使用 [dictionary objectForKey:key];
在 NSDictionary 中搜索
或
b.使用 [NSPredicate predicateWithFormat:@"someKey like %@",someKeyValue];
在 NSArray 中搜索
在这两种情况下,我都会创建集合。
问候!
【问题讨论】:
【参考方案1】:假设一个编程良好的字典,这会快得多。一个好的字典应该使用哈希图在恒定时间 O(1) 内找到您的密钥。如果数组已排序,知道这一点并使用二进制搜索,它可以优化为 O(log n) 的二进制搜索,否则它将不得不线性查看每个对象,即 O(n) 操作。最好的办法是,如果你能以某种方式将键变成直接索引,可能是一次性排序。
【讨论】:
一本好的字典会在 O(1) 中找到您的密钥。哈希图具有恒定时间查找。 “好”是一个非常灵活的词。基于散列的字典和基于树的字典在不同的情况下都有其吸引力。 NS/CFDictionary 通常是基于哈希的结构,但保留比这慢的权利(参见 CFDictionary.h)。以上是关于NSDictionary VS NSArray+NSPredicate:哪个更快/推荐的主要内容,如果未能解决你的问题,请参考以下文章
来自 plist 文件的 NSArray 或 NSDictionary
带有 NSArray 的 UITableview 包含 NSDictionary 和 NSDictionary 包含另一个 NSDictionary