我看到这个问题询问是否globals are bad。
当我想到它的后果时,我能提出的唯一论据是,在某些情况下它们是必要的可能是出于性能原因。
但是,我对此并不十分肯定。所以我的问题是,使用全局比使用get / set方法调用要快吗?
答案 0 :(得分:10)
一个优秀的现代编译器应该内联get / set方法调用,以便可能没有真正的区别。
几乎在任何情况下,担心静态/全局变量是否会让你头疼而不是性能影响更为重要,无论如何这些影响几乎都无法察觉。
答案 1 :(得分:3)
通过使用汇编语言编写,您可以获得更多性能。并且在调试代码时也会浪费更多时间。
这是完全相同的交易类型。
答案 2 :(得分:3)
更合适的比较是访问全局(静态)和本地。
实际上全局更快,因为访问本地需要将变量offset添加到堆栈指针的值。
然而,你永远不会,永远需要担心这一点。尝试专注于重要的事情,例如使代码可读,可写和正常工作。
答案 3 :(得分:1)
它可能稍微快一些,但速度并没有大幅增加。对于所有内容具有getter和setter函数的Globals确实会降低应用程序的大小。这种尺寸节省是否有利于您的应用程序与您所针对的平台相关。例如,在开发嵌入式应用程序,内存有限的平台时,它可能是一个可行的解决方案。
答案 4 :(得分:1)
这取决于CPU和编译器。在至少一个流行的PPC芯片组中,加载全局变量需要额外的指令,因为它不能以16位相对偏移进行编码。
另外,它可能会占用缓存局部性和/或破坏任何假设没有别名的优化。假设全局变量可以提高性能有点天真。