2013-11-26 26 views
1

我有一些小型的實體,有一些int字段和50個二維數組的字段。沒什麼特別的。是否存儲器初始化/刪除非常耗時?

我生成了很多(數百萬個這樣的實體),每個實體都是不同的:數組是不同的,字段是不同的。 令我驚訝的是,我發現它比每次創建新實體時快2倍以上,並且只重用存在,並將其設置爲0 字段和數組。內存初始化/刪除如此耗時?

+3

是的,也許。有相當多的庫可以優化需要分配大量小對象的情況。根據具體情況,您可能需要考慮[Boost pool](http://www.boost.org/doc/libs/release/libs/pool/doc/index.html)分配器或[洛基](http://loki-lib.sourceforge.net/)。 –

回答

5

存在與對象的內存管理相關的開銷。這可能導致速度減慢。

知道最好的方法就是花時間去做,就像你所做的一樣。
有時它不會打擾你,有時候,你會對它非常敏感。

想想哪個循環會更快:

while (/* not done */) { 
    Ask system for memory 
    Create object 
    Write into object 
    Destroy object 
} 

while (/* not done */) { 
    Write into object 
}