我正在編寫一個程序,其中速度優化是至關重要的。每增加1%速度都不錯。C++在沒有初始化的情況下在堆棧上分配
在一個被稱爲很多的函數中,我需要一個固定大小的(小)類MyClass數組。在開始時,我使用了std :: vector。整個事情是小的(通常爲256項,類大小是12個字節,這意味着3072個字節,如果數組對準16字節)
現在它發生:使用
- C型分配在堆棧上的數組MyClass [256]提高了性能。根據我的理解,這是因爲沒有內存分配/刪除操作,堆棧分配是免費的。
- 使用:: operator new使用內存分配,也提高了性能。因爲它跳過了類的初始化,我不需要。除此之外,我希望儘可能避免原始內存初始化。
所以它應該更快分配堆棧和跳過初始化。如果需要,我可以重寫類構造函數,但我不知道如何。
感謝,
艾蒂安
「MyClass [256],在堆棧上分配」只是順便說一句,你不能決定什麼將在堆棧上,堆什麼,標準沒有澄清它,因爲它只是指定有關生存期類型和存儲類類型。所以它是編譯器的自由決定因素;) – dhein
好吧,這就是理論。我不知道任何不使用堆的新編譯器和本地存儲變量的堆棧。 –
感謝理論的澄清......但我分發二進制文件,我的編譯器確實在堆棧中分配了局部變量,它使我的應用程序運行得更快,所以即使沒有保證,我也會採用它:) – galinette