3

我看到这个问题询问全局变量是否不好

当我考虑它的后果时,我能提出的唯一论点是它们在某些情况下是必要的,这可能是出于性能原因。

但是,我不太确定。所以我的问题是,使用全局会比使用 get/set 方法调用更快吗?

4

5 回答 5

11

一个好的现代编译器应该内联 get/set 方法调用,这样可能没有真正的区别。

几乎在任何情况下,担心静态/全局变量是否会让您头疼比担心性能影响更重要,因为性能影响无论如何都几乎无法检测到。

于 2009-01-27T20:48:40.193 回答
3

通过用汇编程序编写,您可以获得更多性能。而且还会浪费更多时间来调试代码。

这是完全相同的交易类型。

于 2009-01-27T21:00:54.663 回答
3

更合适的比较是访问全局(静态)和本地。

实际上,全局更快,因为访问局部需要将变量偏移量添加到堆栈指针的值。

但是,您永远不需要担心这一点。尝试专注于重要的事情,例如使您的代码可读、可写和工作。

于 2009-01-27T21:12:49.880 回答
1

它可能会稍微快一点,但速度不会有很大的提高。不过,全局变量对所有事物都具有 getter 和 setter 函数确实可以减小应用程序的大小。这种类型的大小节省是否对您的应用程序有益与您的目标平台相关。例如,在开发嵌入式应用程序、内存有限的平台时,它可能是一个可行的解决方案。

于 2009-01-27T20:52:28.470 回答
1

这取决于 CPU 和编译器。在至少一个流行的 PPC 芯片组上,加载全局变量需要额外的指令,因为它不能以 16 位相对偏移量编码。

此外,它可能会对缓存局部性产生巨大影响和/或破坏任何假设没有混叠的优化。假设全局变量可以提高性能有点幼稚。

于 2009-01-27T22:26:16.440 回答