我正在编写一个程序,其中速度优化是至关重要的。每增加1%速度都不错。C++在没有初始化的情况下在堆栈上分配
在一个被称为很多的函数中,我需要一个固定大小的(小)类MyClass数组。在开始时,我使用了std :: vector。整个事情是小的(通常为256项,类大小是12个字节,这意味着3072个字节,如果数组对准16字节)
现在它发生:使用
- C型分配在堆栈上的数组MyClass [256]提高了性能。根据我的理解,这是因为没有内存分配/删除操作,堆栈分配是免费的。
- 使用:: operator new使用内存分配,也提高了性能。因为它跳过了类的初始化,我不需要。除此之外,我希望尽可能避免原始内存初始化。
所以它应该更快分配堆栈和跳过初始化。如果需要,我可以重写类构造函数,但我不知道如何。
感谢,
艾蒂安
“MyClass [256],在堆栈上分配”只是顺便说一句,你不能决定什么将在堆栈上,堆什么,标准没有澄清它,因为它只是指定有关生存期类型和存储类类型。所以它是编译器的自由决定因素;) – dhein
好吧,这就是理论。我不知道任何不使用堆的新编译器和本地存储变量的堆栈。 –
感谢理论的澄清......但我分发二进制文件,我的编译器确实在堆栈中分配了局部变量,它使我的应用程序运行得更快,所以即使没有保证,我也会采用它:) – galinette