c++map中如何使用和查找性能测试-创新互联

c++ map中如何使用和查找性能测试?这个问题可能是我们日常学习或工作经常见到的。希望通过这个问题能让你收获颇深。下面是小编给大家带来的参考内容,让我们一起来看看吧!

目前创新互联建站已为超过千家的企业提供了网站建设、域名、网页空间、网站改版维护、企业网站设计、建瓯网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。

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

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

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

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

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

感谢各位的阅读!看完上述内容,你们对c++ map中如何使用和查找性能测试大概了解了吗?希望文章内容对大家有所帮助。如果想了解更多相关文章内容,欢迎关注创新互联成都网站设计公司行业资讯频道。

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


分享标题:c++map中如何使用和查找性能测试-创新互联
网页链接:http://hbruida.cn/article/dddhdo.html