c++ - 全局变量是否意味着更快的代码?

标签 c++ c optimization

我最近在 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/

相关文章:

c++ - 编译简单的 C++ 程序时出现问题

c++ - 初学者和 C++ 模板 : Is it an how possible using C++ template make a class oriented to work with chars work with costume structures?

c++ - 等待系统调用完成

c - 如何将 __FUNCTION__ 添加到系统日志中

c++ - boost Weak_Ptr : Destruction is more expensive than expected

c++ - 宏扩展中的语法错误

c - 如果使用管道时子进程数大于处理器数,进程是否会被阻塞?

对 C 中 %d 和 %ld 以及 %lld 和 %u 的边界感到困惑

sql - 优化选择查询

c# - 检测数据库中的表是否因优化需要而更改