博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
map表遍历性能
阅读量:4199 次
发布时间:2019-05-26

本文共 911 字,大约阅读时间需要 3 分钟。

最近收到很多对数据库查询压力过大的反馈,由于我的程序只是从数据库读取记录,和进行缓冲;所以考虑通过延长应用程序内部的缓存时间、增大缓存量,使程序从缓存中读取数据,从而解决访问数据库过于频繁的问题,从而降低数据库读取压力。

程序中的缓存数据使用STL中的map表保存,缓存的数据量比较大,单个对象占用50个字节,缓存个数约1百万吧;且由于有定时的遍历检查任务,所以比较担心遍历的性能,于是进行了遍历map表的性能测试。先测试了一下10万次遍历的性能,发现计算机速度快的超出想象,具体耗时如下:
10万次调试版本:329、343;10万次发布版本:15、15;
耗时的时长单位为毫秒(ms),以下均为毫秒。看来对于发布版本的性能确实比调试版本快很多呀,10万次的遍历测试对发布版本测试意义不大,下面测试一下百万循环的耗时。描述一下本机的测试环境,Dell笔记本电脑,CPU是Intel迅驰1.73G、512M内存、WINXP系统(SP2),以下是发布版本对几种遍历个数的测试结果:
100万次:125、125、125、110、109、109;占用内存约130MB
200万次:281、235、250、234、250、235;占用内存约96MB
500万次:65563、64797、53437、63250、69230、70969;占用内存约240MB
当进行500万次map表遍历测试时,计算机的硬盘一直狂转不止,通过任务管理器也可以看到程序,这时使用了大量的虚拟内存,估计这就是性能下降很多的原因吧。
对比上述几种遍历次数的测试,可以得到一些结论,一是一般的计算机(P4)支持百万次的map表遍历没有什么性能影响,估计200万次下的都可以接受;二是如遍历次数过多(500万以上),性能会发生直线的下降,这种情况我们在编程的过程中应当避免;三是物理内存和虚拟内存相比,性能差距确实是非常之大,如果确实需要消耗比较大的内存,那我们就需要对计算机的内存进行扩容了。
联想其他数据存储类型,STL的list、hash_map、vector和MFC的CList、CMap、CArray等容器存储数据时,其遍历性能应该不会比map表差吧。

转载地址:http://nauli.baihongyu.com/

你可能感兴趣的文章
SEO
查看>>
关于rel="nofollow"
查看>>
magento 模块重写机制
查看>>
来一篇英文转载文章---magento----widgets
查看>>
SEO方案一般步骤
查看>>
网站单页面优化的6个技巧
查看>>
个人对magento整体的理解
查看>>
在magento中如何调用static block
查看>>
Magento事件一览表
查看>>
magent controller
查看>>
magento--12--24--2010
查看>>
MAGENTO数据转移/换服务器/换域名
查看>>
强制增加magento用户
查看>>
获取数据!!
查看>>
magento ----后台grid模块的加载 --以news插件为例个人分析(一)
查看>>
站长制定网站的SEO策略步骤
查看>>
站长浅谈企业网站多个关键字的优化方法
查看>>
解析百度11位现象和网站作弊降权
查看>>
magento-----(一)前后台url的区别分析----(二)模块的执行过程分析
查看>>
magento---后台grid加载过程分析(二)-------edit grid-----news插件为例!
查看>>