本地函数变量初始化需要处理时间吗? e.g:
void foo ( void ) {
char *str = "hello";
int num = 3;
}
或者,与全局变量一样,它们的值已经分配给二进制文件的只读部分了吗?
换句话说:与没有局部变量的函数相比,调用具有许多局部变量的函数是否会耗费时间?
编辑: 我看到很多人都很生气,因为我似乎试图以一种非常挑剔/糟糕的方式优化我的代码,这不应该被考虑。我知道这件事。我问这个问题只是为了理解事情的行为和功能,而不是出于优化原因。谢谢。 顺便说一句,也许我的代码是在低功耗MCU上?考虑其他选择,PC不是唯一的选择。
答案 0 :(得分:3)
这不是很多时间,但是是的。这需要时间。
在这个例子中,文本“hello”已经作为一个常量值存在于某个地方,
但str
必须设置为在运行时指向它。
并且值3必须存储在num
答案 1 :(得分:0)
如果您喜欢冒险,请尝试使用objdump
使用和不使用额外变量来解析您的可执行文件。当您在函数中创建更多局部变量时,您将看到编译器插入了额外的指令(设置寄存器或执行加载操作)。每条指令都需要非零时间......