1

局部函数变量初始化需要处理时间?例如:

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

或者,像全局变量一样,它们的值已经在二进制文件的只读部分中赋值?

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

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

4

2 回答 2

3

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

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

并且值 3 必须存储在num

于 2010-01-30T19:51:07.800 回答
0

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

于 2010-01-30T19:57:52.397 回答