3.13
运用typelist自动产生classes(不好意思,没太看懂,略去)
4
小型对象分配技术
4.1
缺省的Free Store分配器
由于某些“神秘原因”,系统缺省的free store分配器速度极慢,恶名昭彰。其中一个可能的原因是,它通常只是C heap分配器(malloc/realloc/free)的浅层包装。C heap分配器并未特别针对小块内存的分配进行优化。C程序通常十分有条理地、保守地使用内存,却不会采用任何“导致小块内存被大量分配”的手法或技巧。C程序通常分配中大型对象(数百或者数千个bytes)。
除了速度慢,C++缺省分配器的通用性也造成小型对象空间分配的低效。(细述,指对小对象会额外分配空间,以保证不小于最小区块,而且链表的薄记管理部分也开销很大,对小对象比较多时尤为明显)。
在C++中,动态分配很重要。执行期多态性和动态分配的联系最为密切。“Pimpl手法”就要求“以free store分配取代stack分配”为前提。
因此,在迈向高效C++程序开发的道路上,缺省分配器的低劣性能成为一种障碍。老练的C++程序员会尽量避免使用“采行free store分配行为”的语言构件,因为根据经验他们知道它的成本高昂。缺省分配器不仅是个具体问题,还可能成为一个心理障碍。