C变量实例化速度

时间:2014-08-29 14:55:21

标签: c nxt

我的主循环中有一个函数叫做~200hz。它在NXT上运行,所以处理器速度很慢。在我的函数中,它实例化一个变量,将其写入屏幕,然后结束。由于处理器的速度,我需要这个函数尽可能快,并且想知道在全局范围内声明变量是否更快,并且每次调用函数时重置它,或者在函数内实例化它。为了澄清,哪个例子会更快?

 int foo=0;
 void bar() {
    foo=0;
    //do something with foo
 }

VS

void bar() {
   int foo=0;
   //do something with foo
}

显然,我想在我的代码中使用第二个片段,因为全局变量被认为是“坏”,但是NXT处理器真的很慢。

2 个答案:

答案 0 :(得分:1)

每当你有这样的东西时,最好的办法就是简单地测量两种选择的速度。如果没有对它们进行测试,确实无法确定哪种方法会更好,特别是考虑到您不知道编译器是如何编译代码的。

答案 1 :(得分:0)

通常,自动变量的分配在C中是一个noop:所有局部变量都分配了一个递减堆栈指针的指令,这在几乎所有函数中都需要完成。而且,通常,访问堆栈内存是您可以获得的最快速度。因此,一般来说,您应该期望两个程序之间没有性能差异。如果存在差异,您应该期望全局变量稍微慢一些。

然而,我使用了"通常"和#34;一般"故意:硬件可能存在,但事实并非如此。我不知道你的处理器。所以,可以肯定的是,请注意Alex Kleiman的建议和措施。在优化方面,衡量是唯一的事实来源。