Ansi C运行时性能全局变量与局部变量

时间:2019-03-08 11:13:28

标签: c performance variables

我在考虑运行时性能,具体取决于局部变量的定义。哪个变体可以执行得更快或没有区别?

变种1:

extern uint8 GlobalArray[10];
void myFunc(void)
{
  int i;
  uint8_t* pNumber;
  for (i=0; i<10; ++i)
  {
    pNumber = &(globalArray[i]);
    // Do anything with pNumber
  }
}

变种2:

extern uint8 GlobalArray[10];
void myFunc(void)
{
  int i;

  for (i=0; i<10; ++i)
  {
    uint8_t* pNumber = &(globalArray[i]);
    // Do anything with pNumber
  }
}

1 个答案:

答案 0 :(得分:4)

1)和2)之间没有区别,因为在源中声明变量的时间与在实际应用程序中将其放入堆栈/寄存器中的时间之间没有关系。

最好尽可能缩小范围,但这与性能无关。