1

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

假设我有NSDictionary2 个键值对。

  1. 第一个键值是 100 或 1000 或 10000(或任意数量)字典对象的数组。
  2. 第二个键值是一个字符串对象,它被维护以准确存储数组的计数(这可以是一个NSNumber对象,但让我们保持它NSStringJSON精神)。

所以,像:

{
    "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];

注意:这只是一个基本示例,请多多包涵。

4

1 回答 1

3

假设您已经解析了 JSON:根据对这个问题的回答,对于,count是常量NSMutableArray,因此count在处理时间方面至少应该是一样有效的。它在内存方面肯定更有效,更重要的是,使用 count 不是多余的,更容易维护。

如果您不想解析整个 JSON,那么情况当然会有所不同。要仅获取对象的数量,您无需创建数组。单独存储计数会给您带来O(1)复杂的计数,解析数组是O(n). 对于大型阵列,这可以产生明显的差异。

于 2013-10-28T05:49:45.733 回答