Closed. This question needs details or clarity。它当前不接受答案。
想改善这个问题吗?添加详细信息并通过editing this post阐明问题。
5年前关闭。
我知道从堆栈分配内存的速度更快,但是访问速度更快的变量时
例如:
以上哪个功能执行速度更快?
我问这个问题是因为我正在用C ++创建游戏引擎,并且我经常进行绘图调用,这些调用很小,仅涉及矩阵的变换,旋转等,因此哪种分配对我的目的最有用
想改善这个问题吗?添加详细信息并通过editing this post阐明问题。
5年前关闭。
我知道从堆栈分配内存的速度更快,但是访问速度更快的变量时
例如:
void fn1()
{
int *p=new int[50];
for(int i=0;i<50;i++)
p+i=i*i;
}
void fn2()
{
int p[50];
for(int i=0;i<50;i++)
p[i]=i*i;
}
以上哪个功能执行速度更快?
我问这个问题是因为我正在用C ++创建游戏引擎,并且我经常进行绘图调用,这些调用很小,仅涉及矩阵的变换,旋转等,因此哪种分配对我的目的最有用
最佳答案
尽管该标准没有说明任何问题,但是在具有统一内存结构的计算机上应该没有区别。您可能会发现由于CPU缓存的影响,访问时间有所不同,因为在堆栈中分配的数组p
中的数据将更接近(就地址而言)函数的其他局部变量的数据。 (除非优化程序选择将这些本地变量放置在寄存器中),但是总访问时间应该相同。
动态分配内存的最大冲击是malloc
和free
的调用。
09-08 08:41