gpt4 book ai didi

c - 我是否可以通过将变量设为静态来提高性能?

转载 作者:太空狗 更新时间:2023-10-29 16:37:39 28 4
gpt4 key购买 nike

为什么有些人声明他们的变量是静态的,像这样:

char baa(int x) {
static char foo[] = " .. ";
return foo[x ..];
}

代替:

char baa(int x) {
char foo[] = " .. ";
return foo[x ..];
}

这似乎在 Linux 源代码应用程序中很常见。有什么性能差异吗?如果是,有人可以解释为什么吗?提前致谢。

最佳答案

这不是为了性能本身,而是为了减少内存使用。 性能提升,但这不是(通常)您会看到这样的代码的主要原因。

函数中的变量分配在堆栈上,每次调用函数时它们都会被保留和删除,重要的是,它们将计入堆栈大小限制,这对许多嵌入式和资源受限的系统来说是一个严重的限制平台。

但是,静态变量存储在 .BSS.DATA 段中(非显式初始化的静态变量将转到 .BSS,静态初始化的静态变量将进入 .DATA),离开堆栈。编译器也可以利用这一点来执行某些优化。

关于c - 我是否可以通过将变量设为静态来提高性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10525707/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com