我最近在 article on game programming 中读到写于 1996 年,使用全局变量比传递参数更快。
这曾经是真的吗?如果是的话,今天仍然如此吗?
最佳答案
简短的回答 - 不,优秀的程序员通过了解和使用适合工作的工具,然后在他们的代码不符合他们的要求时以有条不紊的方式进行优化,从而使代码运行得更快。
更长的答案 - 在我看来,这篇文章写得不是特别好,无论如何都不是关于程序加速的一般建议,而是“15 种更快的 blits 方法”。将这一点推断到一般情况下,无论您如何看待这篇文章的优点,都没有捕获作者的观点。
如果我正在寻找性能建议,我将零信任放在一篇文章中测量代码可能是个好主意。如果你不打算展示如何让代码变得更好,为什么要包含它?
其中一些建议已经过时了 - 很久以前,FAR 指针就不再是 PC 上的问题了。
认真的游戏开发人员(或任何其他专业程序员,就此而言)会对这样的建议大笑:
You can either take out the assert's completely, or you can just add a
#define NDEBUG
when you compile the final version.
我给你的建议是,如果你真的想评估这 15 个技巧中的任何一个的优点,并且由于这篇文章已有 14 年的历史,那就是在现代编译器(比如 Visual C++ 10)中编译代码并尝试确定使用全局变量(或任何其他技巧)可以使其更快的任何区域。
[开个玩笑——我真正的建议是完全忽略这篇文章,并在您遇到无法解决的工作问题时就 Stack Overflow 提出具体性能问题。这样,您得到的答案将经过同行评审,由示例代码或良好的外部证据支持,并且是最新的。]
关于c++ - 全局变量是否意味着更快的代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3952670/