案例分享c++ map的使用和 查找性能测试
导读:收集整理的这篇文章主要介绍了案例分享c++ map的使用和 查找性能测试,觉得挺不错的,现在分享给大家,也给大家做个参考。最近在为推荐服务作性能调优,这个服务的主要逻辑是用离线计算的模型数据给请求中的每个广告打分,再返回这些广告的排序结果,...
收集整理的这篇文章主要介绍了案例分享c++ map的使用和 查找性能测试,觉得挺不错的,现在分享给大家,也给大家做个参考。最近在为推荐服务作性能调优,这个服务的主要逻辑是用离线计算的模型数据给请求中的每个广告打分,再返回这些广告的排序结果,这里面打分的过程其实就用请求中的数据拼成各种key,去查一个大的 map,这种计算非常多,成为了主要的性能瓶颈,代码比较老,使用的是 boost::unordered_map,为了解决这个问题,找了一些第三方库和标准库对比了一下下面是在一台 aws r4.xlarge
机器上的测试结果(注意编译的时候一定要加 -O2):
std::mapint, int> => 51866903std::unordered_mapint, int> => 3838175std::unordered_mapint, int, nohashint> => 3508570std::unordered_mapint, int> (N) => 3804471boost::unordered_mapint, int> => 3291384boost::unordered_mapint, int, nohashint> => 3293934boost::unordered_mapint, int> (N) => 3265856GOOGLE::dense_hash_mapint, int> => 785969google::dense_hash_mapint, int, nohashint> => 784455google::dense_hash_mapint, int> (N) => 899262tsl::hopscotch_mapint, int> => 654668tsl::hopscotch_mapint, int, nohashint> => 680964tsl::hopscotch_mapint, int> (N) => 663607tsl::robin_mapint, int> => 406176tsl::robin_mapint, int, nohashint> => 411358tsl::robin_mapint, int> (N) => 409993
可以看到 tsl::robin_map 的性能基本上能达到 std::unordered_map 的 10 倍,这个性能和操作系统以及库版本也有一定关系,实际生产环境中建议把代码拉下来在自己的环境下测试一下
我们线上用 tsl::robin_map 替换了原来的 boost::unordered_map,整体性能提升了 5 倍,这里面当然也还包含了一些其他的优化,这个优化算是比较大的优化点了
相关文章:
MySQL慢查询查找和调优测试
php函数的查找性能测试
相关视频:
C++ 手册教程
以上就是案例分享c++ map的使用和 查找性能测试的详细内容,更多请关注其它相关文章!
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 案例分享c++ map的使用和 查找性能测试
本文地址: https://pptw.com/jishu/593265.html