我看到这个问题询问全局变量是否不好。
当我考虑它的后果时,我能提出的唯一论点是它们在某些情况下是必要的,这可能是出于性能原因。
但是,我不太确定。所以我的问题是,使用全局会比使用 get/set 方法调用更快吗?
一个好的现代编译器应该内联 get/set 方法调用,这样可能没有真正的区别。
几乎在任何情况下,担心静态/全局变量是否会让您头疼比担心性能影响更重要,因为性能影响无论如何都几乎无法检测到。
通过用汇编程序编写,您可以获得更多性能。而且还会浪费更多时间来调试代码。
这是完全相同的交易类型。
更合适的比较是访问全局(静态)和本地。
实际上,全局更快,因为访问局部需要将变量偏移量添加到堆栈指针的值。
但是,您永远不需要担心这一点。尝试专注于重要的事情,例如使您的代码可读、可写和工作。
它可能会稍微快一点,但速度不会有很大的提高。不过,全局变量对所有事物都具有 getter 和 setter 函数确实可以减小应用程序的大小。这种类型的大小节省是否对您的应用程序有益与您的目标平台相关。例如,在开发嵌入式应用程序、内存有限的平台时,它可能是一个可行的解决方案。
这取决于 CPU 和编译器。在至少一个流行的 PPC 芯片组上,加载全局变量需要额外的指令,因为它不能以 16 位相对偏移量编码。
此外,它可能会对缓存局部性产生巨大影响和/或破坏任何假设没有混叠的优化。假设全局变量可以提高性能有点幼稚。