【问题标题】:Are there any benefits to declaring a commonly declared variable as a global?将通常声明的变量声明为全局变量有什么好处吗?
【发布时间】:2011-10-13 21:27:58
【问题描述】:

例如,我有:

char query[512];

在我连接到 mysql 数据库的应用程序中声明了大约 27 次。

每次大小相同,并在许多不同的函数中声明。

此应用程序永远不会使用线程。

查询总是在使用 snprintf 设置查询后立即执行。 在设置和查询执行之间没有任何功能可以搞砸。

将其声明为全局变量是否有任何好处或性能提升?

【问题讨论】:

    标签: performance optimization memory global-variables


    【解决方案1】:

    当然,就内存消耗而言。每个对象将消耗大量字节,这意味着您可能会为该特定变量使用少 27 倍的内存。此外,创建这些对象会产生少量开销。总的来说,这不会产生重大影响,但在这种情况下重用是最佳实践。

    【讨论】:

      【解决方案2】:

      访问堆栈变量通常等同于访问寄存器中已有指针的偏移量。访问全局变量几乎总是需要先加载全局变量的地址。

      因此,如果您要选择 nits,请使用堆栈变量。除非您打开了其他编译​​器开关,否则会增加堆栈使用的额外开销。

      当然,这实际上取决于您的特定环境(即 CPU、编程语言等)。所以也可以。

      【讨论】:

        【解决方案3】:

        我会说性能有好处,但是根据应用程序的大小,它可能可以忽略不计,但并未优化。 原因是使用一个全局变量,您立即声明它一次,这样计算机就知道它在哪里,而您所做的就是更改它。否则,你必须不断地重新制作它,我想它不会像总有一个可用的那么快。

        【讨论】:

          【解决方案4】:

          据我所知,全局变量的工作方式类似于缓存内存,它比其他变量访问速度更快,因为它在程序开始时分配..,如果您每次分配一个新变量,而不是仅仅浪费 CPU 周期内存到堆栈中的变量...所以用作全局变量

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-10-10
            • 1970-01-01
            • 2014-10-30
            相关资源
            最近更新 更多