可可 – 检查NSDictionary是否包含特定键的方法是否更快?

可可 – 检查NSDictionary是否包含特定键的方法是否更快?,第1张

概述我可以通过两种方式在NSDictionary中测试一个键的存在: BOOL containsKey = [[dictionary allKeys] containsObject:foo];BOOL containsKey = ([dictionary objectForKey:foo] != nil); 哪个方法更快,为什么? 哈希查找应该更快,一般比过去所有的字典键,从它们创建一个数组(内存 我可以通过两种方式在NSDictionary中测试一个键的存在:

BOol containsKey = [[dictionary allKeys] containsObject:foo];BOol containsKey = ([dictionary objectForKey:foo] != nil);

哪个方法更快,为什么?

解决方法 哈希查找应该更快,一般比过去所有的字典键,从它们创建一个数组(内存分配相对昂贵),然后搜索数组(这甚至不能是一个二分查找,因为数组没有排序) 。

然而,为了科学的缘故,我做了两个可执行文件,执行每个风格100万次并计时它们。

使用allKeys:

real    0m4.185suser    0m3.890ssys     0m0.252s

有了objectForKey:

real    0m0.396suser    0m0.189ssys     0m0.029s

显然,各种因素可以影响这个字典的大小,缓存allKeys返回值等。我不希望有一种情况,其中数组搜索比字典查找快。

总结

以上是内存溢出为你收集整理的可可 – 检查NSDictionary是否包含特定键的方法是否更快?全部内容,希望文章能够帮你解决可可 – 检查NSDictionary是否包含特定键的方法是否更快?所遇到的程序开发问题。

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

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1044453.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存