案例分享c++ map的使用和 查找性能测试

案例分享c++ map的使用和 查找性能测试,第1张

概述案例分享c++ map的使用和 查找性能测试 最近在为推荐服务作性能调优,这个服务的主要逻辑是用离线计算的模型数据给请求中的每个广告打分,再返回这些广告的排序结果,这里面打分的过程其实就用请求中的数据拼成各种key,去查一个大的 map,这种计算非常多,成为了主要的性能瓶颈,代码比较老,使用的是 boost::unordered_map,为了解决这个问题,找了一些第三方库和标准库对比了一下

下面是在一台 aws r4.xlarge 机器上的测试结果(注意编译的时候一定要加 -O2):

std::map<int, int>                                 => 51866903std::unordered_map<int, int>                       => 3838175std::unordered_map<int, int, nohashint>            => 3508570std::unordered_map<int, int>(N)                    => 3804471boost::unordered_map<int, int>                     => 3291384boost::unordered_map<int, int, nohashint>          => 3293934boost::unordered_map<int, int>(N)                  => 3265856Google::dense_hash_map<int, int>                   => 785969Google::dense_hash_map<int, int, nohashint>        => 784455Google::dense_hash_map<int, int>(N)                => 899262tsl::hopscotch_map<int, int>                       => 654668tsl::hopscotch_map<int, int, nohashint>            => 680964tsl::hopscotch_map<int, int>(N)                    => 663607tsl::robin_map<int, int>                           => 406176tsl::robin_map<int, int, nohashint>                => 411358tsl::robin_map<int, int>(N)                        => 409993

可以看到 tsl::robin_map 的性能基本上能达到 std::unordered_map 的 10 倍,这个性能和 *** 作系统以及库版本也有一定关系,实际生产环境中建议把代码拉下来在自己的环境下测试一下

我们线上用 tsl::robin_map 替换了原来的 boost::unordered_map,整体性能提升了 5 倍,这里面当然也还包含了一些其他的优化,这个优化算是比较大的优化点了

相关文章:

MySQL慢查询查找和调优测试

php函数的查找性能测试

相关视频:

C++ 手册教程 总结

以上是内存溢出为你收集整理的案例分享c++ map的使用和 查找性能测试全部内容,希望文章能够帮你解决案例分享c++ map的使用和 查找性能测试所遇到的程序开发问题。

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

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

原文地址: http://outofmemory.cn/langs/1211382.html

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

发表评论

登录后才能评论

评论列表(0条)

保存