[英]C99 variable length automatic array performance
在64位x86 Linux平台上使用带有g ++ / Intel的自动数组是否会产生显着的CPU /内存开销?
int function(int N) {
double array[N];
与先前分配数组相比的开销(假设函数被多次调用)
与使用新的相比开销
与使用malloc
相比的开销
N的范围可以粗略地从1kb到16kb,堆栈溢出不是问题。
VLA和静态大小的阵列之间的性能差异应该可以忽略不计。 您可能需要一些额外的指令来计算堆栈的增长量,但这应该是任何实际程序中的噪声。
嗯,进一步考虑,根据局部变量在内存中的布局以及是否存在多个VLA,也可能存在一些开销。
考虑你有本地人的情况(并假设他们按照指定的顺序放入内存)。
int x;
int arr1[n];
int arr2[n];
现在,无论何时需要访问arr2
,代码都需要计算arr2
相对于基指针的位置。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.