gpt4 book ai didi

c++ - NSSet 与 unordered_set

转载 作者:太空宇宙 更新时间:2023-11-04 11:51:08 25 4
gpt4 key购买 nike

我对 Cocoa 的 NSSet 的性能进行了简单的随机测试。与 STL 的 unordered_set .两者都是使用哈希表实现的。由于 C++ 以其高性能代码而闻名,我很惊讶地看到 NSSetunordered_set 快约 1.5 倍.谁能阐明这是为什么?

附言测试正在搜索随机字符串(使用 NSString 表示 NSSetbasic_string<unichar> 表示 unordered_set)。

编辑:这是代码:https://github.com/fumoboy007/StringCollectionSpeedTest .

最佳答案

启用优化并享受 C++ 容器的“快速”:循环为零纳秒,已被编译器优化掉!你不是在这里喃喃自语:“别惹我!”编译器比你想象的更聪明。 ;)

因此,首先要欺骗编译器:重构您的测试,以便循环生成结果,并且该结果必须取决于每次迭代中的操作(例如对计数求和) .该结果也必须在某处使用,例如将其打印到控制台。否则,编译器将再次检测到您不需要该结果,因此根本不需要执行循环。

编辑:

测试结果(在我的系统上):

事实证明,NSSet 和 std::unordered_set 查找的时间差不多。

关于c++ - NSSet 与 unordered_set,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18176490/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com