【问题标题】:NSDictionary VS NSArray+NSPredicate: which is faster/recommentedNSDictionary VS NSArray+NSPredicate:哪个更快/推荐
【发布时间】:2011-09-13 20:27:26
【问题描述】:

从集合中获取对象的速度更快?

一个。使用 [dictionary objectForKey:key]; 在 NSDictionary 中搜索 或

b.使用 [NSPredicate predicateWithFormat:@"someKey like %@",someKeyValue]; 在 NSArray 中搜索

在这两种情况下,我都会创建集合。

问候!

【问题讨论】:

    标签: performance nsarray nsdictionary nspredicate


    【解决方案1】:

    假设一个编程良好的字典,这会快得多。一个好的字典应该使用哈希图在恒定时间 O(1) 内找到您的密钥。如果数组已排序,知道这一点并使用二进制搜索,它可以优化为 O(log n) 的二进制搜索,否则它将不得不线性查看每个对象,即 O(n) 操作。最好的办法是,如果你能以某种方式将键变成直接索引,可能是一次性排序。

    【讨论】:

    • 一本好的字典会在 O(1) 中找到您的密钥。哈希图具有恒定时间查找。
    • “好”是一个非常灵活的词。基于散列的字典和基于树的字典在不同的情况下都有其吸引力。 NS/CFDictionary 通常是基于哈希的结构,但保留比这慢的权利(参见 CFDictionary.h)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-22
    • 2012-08-02
    • 1970-01-01
    • 1970-01-01
    • 2012-05-17
    • 2010-10-31
    相关资源
    最近更新 更多