在NSDictionary中,通过它的-count方法检查NSArray对象的计数是否更快,或者是否包含一个包含计数的单独键值对?

时间:2013-10-28 05:43:12

标签: objective-c json nsarray nsdictionary

只是一个思考问题(甚至不是什么大问题,但引起了我的好奇心)。

假设我有NSDictionary,其中包含2个键值对。

  1. 第一个键值是100或1000或10000(或任意数量)字典对象的数组。
  2. 第二个键值是一个字符串对象,它被维护以准确存储数组的数量(这可以是NSNumber个对象,但让它NSString保持在JSON }精神)。
  3. 所以,比如:

    {
        "keyValues": [
            {
                "key_1": "value_1"
            },
            {
                "key_2": "value_2"
            },
            ...
            ...
            {
                "key_N": "value_N"
            }
        ],
        "keyCount": "N" //where 'N' 100 or 1000 (basically the count of the array)
    }
    

    现在,我的问题是,哪个更有效率(即使是非常小的差距)

    1. int count = [[myDictionary valueForKey:@"keyCount"] intValue];
    2. int count = [[myDictionary valueForKey:@"keyValues"] count];
    3. 注意:这只是一个基本的例子,所以请耐心等待。

1 个答案:

答案 0 :(得分:3)

假设您已经解析了JSON:根据this question的答案,count的{​​{1}}是常量,因此NSMutableArray在处理方面应该至少同样有效时间。它在内存方面肯定更有效,更重要的是,使用count并不是多余的,也更容易维护。

如果您不想解析整个JSON,那么事情看起来就不同了。要仅获取对象的数量,您不需要创建数组。将计数分开存储会使计数具有count复杂度,解析数组为O(1)。对于大型阵列,这可能会产生明显的差异。