繁体   English   中英

C99可变长度自动阵列性能

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM