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分配行為”的語言構件,因為根據經驗他們知道它的成本高昂。缺省分配器不僅是個具體問題,還可能成為一個心理障礙。