我看到这个问题问全局是否是坏

当我想到它的后果,唯一的参数我能想出的是他们需要在某些情况下可能是出于性能的考虑。

不过,我真的不知道这一点。所以我的问题是,将使用全局比使用的get / set方法调用更快?

有帮助吗?

解决方案

一个更合适的比较将是访问之间的全局(静态)和本地

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

但是,你永远不会,曾经的需要担心这一点。尝试集中在重要事物,如使代码可读,可写,和工作。

其他提示

有一个良好的现代编译器应内嵌的get / set方法调用,从而有可能没有真正的区别。

在几乎所有情况下,它更重要的是担心静态/全局是否会导致你头疼比对性能的影响,这将是几乎检测不到呢。

您可以通过在编译器的时候获得更多的表现呢。而在调试代码也失去了更多的时间。

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

这可能是稍快,但速度不是一个巨大的增长。全局在具有getter和setter函数的一切并保持应用程序的大小下来,虽然。无论这种类型的储蓄规模是有益于您的应用是有关你的目标平台。例如,当开发嵌入式应用程序时,具有有限的存储器平台,它可以是一个可行的解决方案。

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

此外,它可以采取一个巨大的垃圾上缓存局部性和/或破坏该假设没有混叠的任何优化。假设全局可以提高性能有点幼稚。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top