std::map查询效率优化

发布时间:2025-02-22 16:12

词汇查询:不懂就查,提升阅读效率。 #生活技巧# #学习技巧# #学术论文阅读技巧#

最新推荐文章于 2024-12-06 21:41:55 发布

debehe 于 2010-02-03 11:58:00 发布

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

0.现状,数据是个xml文件,每个节点对应的结构体有10个成员变量,共有2000多条数据,用的std::map<string, struct>来保存,用map的find函数进行搜索时的效率极

其低下,循环搜索30条数据竟然要20s+,搓死。

1.为什么这么慢?

最初怀疑是std::map的效率问题,正考虑是否使用std::hast_map来替换,于是了解下两者之间的差别:

std::map是个自平衡的红黑树,他的效率是平均的

hash_map的是一个hash表,只要你的hash算法足够唯一,你的效率可以达到O(1)

翻书时大牛就在旁边,就问了他,把情况和他一说。他立刻点名:

用hash_map的效率确实会比map的高,但你的数据才2000多,两者在这里数量级上的效率差异应该很小。主要的问题应该在于你的map,你的map的value不是一个指针

,而是一个大结构体,这会导致搜索时的内存频繁被交换出去,因而导致效率低下。

2.按照大牛的建议,修改,测试,消耗的时间由原来的20s+变成了0

the end

网址:std::map查询效率优化 https://www.yuejiaxmz.com/news/view/788605

相关内容

MySQL 查询优化:提速查询效率的13大秘籍(避免使用SELECT *、分页查询的优化、合理使用连接、子查询的优化)(上)
C++框架的代码优化:提升性能和效率
浅谈简单的程序优化技巧(C++)
解析 static auto x = []() { std::ios::sync
SQL查询优化技巧
MySQL慢查询优化
【C++游戏代码优化秘法】:执行效率提升的7个编码实践
查询优化技巧
MySQL使用limit 1提高sql查询效率
std::string与char*之临时缓冲区

随便看看