HTML5   发布时间:2022-04-27  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios – NSArray containsObject:更快的替代方案?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我在使用instruments的iOS应用程序上运行了一些运行,我发现启动时主线程上的90%负载(总共大约1000ms)是由containsObject:calls引起的.这是主线程,我不认为这很酷.

这种方法有更快的替代方案吗?算法或其他方法

有什么建议?

更多信息:

>我再次查看了我的代码,我意识到事实上我不需要知道对象的顺序,只有当一个对象是该集合的一部分时.这意味着NSSet会做得很好(我想更快).
>对象数 – 该集合中可能有1000个对象.

@H_618_11@

解决方法

如果您需要使用阵列,请稍微向下跳过

替代选项

您的其他选择可能包括

>使用NSDictionary,它使用key->值对(我希望)具有O(1)读取复杂性,代价是密钥的额外存储空间
>如果您没有使用重复项并且顺序不重要,使用NSSet将提供更好的读取复杂性(我不知道复杂性会是什么,文档可能会)

使用数组

如果对数组进行排序,则可以在O(log n)时间内进行搜索,而不是O(n),因为您可以利用二进制搜索.

Caveat Lector:这是从记忆中写的

-(void) /*adding*/
{
    int proposedIndex = 0;
    proposedIndex = [array indexOfObject:node
                                inSortedRange:NsmakeRange(0,array.count)
                                      options:NSBinarySearchingInsertionIndex
                              usingComparator:
                      ^ NSComparisonResult(id obj1,id obj2)
                      {
                          if (obj1.valueToCompare < obj2.valueToComparE) return NSorderedAscending;
                          if (obj1.valueToCompare > obj2.valueToComparE) return NSorderedDescending;
                          else return NSorderedSame;
                      }];

    [array insertObject:node aTindex:proposedIndex];
}


-(id) /* GetTing */
{
    int LOCATIOn = [array indexOfObject:node
                                    inSortedRange:NsmakeRange(0,array.count)
                                          options:NSBinarySearchingFirstEqual
                                  usingComparator:
                          ^ NSComparisonResult(id obj1,id obj2)
                          {
                              if (obj1.valueToCompare < obj2.valueToComparE) return NSorderedAscending;
                              if (obj1.valueToCompare > obj2.valueToComparE) return NSorderedDescending;
                              else return NSorderedSame;
                          }];
    if (LOCATIOn == NsnotFound) return nil;
    return [array objectATindex:LOCATIOn];
}
@H_618_11@ @H_618_11@

大佬总结

以上是大佬教程为你收集整理的ios – NSArray containsObject:更快的替代方案?全部内容,希望文章能够帮你解决ios – NSArray containsObject:更快的替代方案?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。