C++应用程序性能优化
boluo1982107
积极,勤政,不二过。
展开
-
深入理解虚拟内存管理
访问虚拟内存时的处理流程 一张流程图,看明白了,一切OK。虚拟地址到物理地址的转换 Win32中的“指针”意味着虚拟地址。将32位氛围10位、10位、12位,第一个10位用来定位页目录中的页目录项,左移两位,此页目录项指向一个页表;第二个10位定位也表中的页表项,指向真正的物理内存;最后12位定位页内数据(一个页面4KB)。 页表项中有一位用来标原创 2009-01-02 08:43:00 · 3974 阅读 · 0 评论 -
初涉优化
谈到优化的问题,首先要明白C++的特性带来多大的性能开销、生成程序的瓶颈在哪个部分,然后采取针对性的措施。有时,在程序还没有得到优化、真正地满足需要之前,我们还不能松一口气,对自己说“Code Complete!”分别简单地回顾一下:1,C++对象模型程序使用内存区、全局/静态存储区及常量数据区、堆和栈、C++中的对象对象的生命周期、内存布局、构造与析构的调用2,C++语言特性原创 2008-11-26 07:50:00 · 682 阅读 · 0 评论 -
内存池详解(1)
为何要使用内存池 利用默认的内存管理函数,在堆上分配和释放内存会有一些额外的开销。 系统在接收到分配一定大小内存的请求时,首先查找内部维护的内存空闲块表,并且需要根据一定的算法找到合适大小的空闲内存块。其间,还涉及到空闲内存块的分割、合并等问题。 默认的内存管理函数还考虑到多线程的应用,需要在每次分配和释放内存时加锁,同样增加开销。 频繁在堆上分配和原创 2008-11-26 19:12:00 · 879 阅读 · 0 评论 -
内存池详解(2)
以下是一个简单的内存池实现方法:#include #include #include #include using namespace std; const int maxnames=5; class names { char name[25]; static char names::pool[]; static原创 2008-11-28 08:47:00 · 622 阅读 · 0 评论 -
内存池详解(3)
参考:http://hi.baidu.com/anglecloudy/blog/item/abfd611e3d18ca184034172d.html boost库里面已经实现了内存池分配器,一不小心又火星了...... 参考:http://www.cnblogs.com/whu-gy/archive/2008/05/04/1181756.html这篇帖子里面将书上给出的代码都敲出来原创 2008-11-28 09:16:00 · 576 阅读 · 0 评论 -
C++性能优化实践(转载&分析)
From:http://www.cppblog.com/sandy/archive/2006/01/05/2448.html配置文件读写是项目中经常会用到的,如果仅仅是遵从“逐条添加-查找”的方式,当数据量上升的时候[1],很容易导致巨大的时间消耗:SetKeyValue函数所需时间以N*N的方式增长[4]。为此,根据项目实际情况[2],使用map,将查找时间变成了常数级别[5]。结论原创 2008-11-30 08:41:00 · 615 阅读 · 0 评论