3.13
運(yùn)用typelist自動產(chǎn)生classes(不好意思,沒太看懂,略去)
4
小型對象分配技術(shù)
4.1
缺省的Free Store分配器
由于某些“神秘原因”,系統(tǒng)缺省的free store分配器速度極慢,惡名昭彰。其中一個可能的原因是,它通常只是C heap分配器(malloc/realloc/free)的淺層包裝。C heap分配器并未特別針對小塊內(nèi)存的分配進(jìn)行優(yōu)化。C程序通常十分有條理地、保守地使用內(nèi)存,卻不會采用任何“導(dǎo)致小塊內(nèi)存被大量分配”的手法或技巧。C程序通常分配中大型對象(數(shù)百或者數(shù)千個bytes)。
除了速度慢,C++缺省分配器的通用性也造成小型對象空間分配的低效。(細(xì)述,指對小對象會額外分配空間,以保證不小于最小區(qū)塊,而且鏈表的薄記管理部分也開銷很大,對小對象比較多時尤為明顯)。
在C++中,動態(tài)分配很重要。執(zhí)行期多態(tài)性和動態(tài)分配的聯(lián)系最為密切。“Pimpl手法”就要求“以free store分配取代stack分配”為前提。
因此,在邁向高效C++程序開發(fā)的道路上,缺省分配器的低劣性能成為一種障礙。老練的C++程序員會盡量避免使用“采行free store分配行為”的語言構(gòu)件,因?yàn)楦鶕?jù)經(jīng)驗(yàn)他們知道它的成本高昂。缺省分配器不僅是個具體問題,還可能成為一個心理障礙。