【发布时间】:2014-01-09 06:07:12
【问题描述】:
我知道从堆栈分配内存更快,但是当访问更快的变量时 例如:
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++ 创建一个游戏引擎,而且我经常进行绘制调用,这些调用非常小,仅涉及矩阵的变换、旋转等,因此哪种分配对我的目的最有用
【问题讨论】:
-
你是指栈还是堆?
-
为什么不测试一下?
-
无法保证我知道任何一种方式,尤其是在NUMA 机器上,但通常
new与仅在堆栈上保留空间相比非常慢.问题是,在用数据填充内存后,您将使用内存做什么?如果要返回数据,堆分配的数据不需要复制,而堆栈数据则需要。 -
测量时间也许;)?
标签: c++ performance stack