本地函数变量初始化需要处理时间?

时间:2010-01-30 19:48:59

标签: c variables time initialization local

本地函数变量初始化需要处理时间吗? e.g:

void foo ( void ) {
    char *str = "hello";
    int num = 3;
}

或者,与全局变量一样,它们的值已经分配给二进制文件的只读部分了吗?

换句话说:与没有局部变量的函数相比,调用具有许多局部变量的函数是否会耗费时间?

编辑: 我看到很多人都很生气,因为我似乎试图以一种非常挑剔/糟糕的方式优化我的代码,这不应该被考虑。我知道这件事。我问这个问题只是为了理解事情的行为和功能,而不是出于优化原因。谢谢。 顺便说一句,也许我的代码是在低功耗MCU上?考虑其他选择,PC不是唯一的选择。

2 个答案:

答案 0 :(得分:3)

这不是很多时间,但是是的。这需要时间。

在这个例子中,文本“hello”已经作为一个常量值存在于某个地方, 但str必须设置为在运行时指向它。

并且值3必须存储在num

答案 1 :(得分:0)

如果您喜欢冒险,请尝试使用objdump使用和不使用额外变量来解析您的可执行文件。当您在函数中创建更多局部变量时,您将看到编译器插入了额外的指令(设置寄存器或执行加载操作)。每条指令都需要非零时间......