C:访问全局变量或将指针传递给函数更快

imb*_*aer 5 c variables pointers global

我目前正在重写我的一个程序.它具有强大的递归功能,解决了peg-solitaire:

int solve(int draw) {
  if (finished())
    return true;

  //loop over every possible move (about 76 long values)
  //do a move (access the board, which is a long value)
  if (solve(draw + 1))
    return true;

  return false;
}
Run Code Online (Sandbox Code Playgroud)

所以我想知道使用这样的解决方案是否更快:

solve(int draw, long **moves, long *board) {}
Run Code Online (Sandbox Code Playgroud)

目前,移动和董事会都是全局变量.

当然我要测试它,但如果有人告诉我这个尝试不会有效,我会节省一些时间:).

最好的祝福

Oli*_*rth 9

它可能效率不高,但唯一可以确定的方法是分析您的代码.如果你的大部分执行时间用于实际的游戏逻辑,那么在堆栈上放置一些参数的微小开销应该可以忽略不计.

但是,从设计的角度来看,避免全局变量要好得多.它允许您的代码无状态,因此可能具有重入性和线程安全性.但是,这可能与您的申请相关,也可能不相关.