决定使用静态变量进行优化的标准是什么?

问题描述 投票:0回答:0

这是我开始考虑这个的示例代码

void renderScene(void)
{
    //Clear all pixels
    glClear(GL_COLOR_BUFFER_BIT);
    // Question : Declaring posAttrib as a static variable is good? or bad?
    GLint posAttrib = glGetAttribLocation(programID, "vtxPosition");


    glVertexAttribPointer(posAttrib, 3, GL_FLOAT, GL_FALSE, 0, ((void*)(0)));
    glEnableVertexAttribArray(posAttrib);
    glDrawArrays(GL_POINTS, 0, 3);

    //Double buffer
    glutSwapBuffers();
}

这是关于 OpenGl 的,

renderScene()
将在我的屏幕呈现时被调用。 所以我觉得如果我把
posAttrib
声明为静态变量,会减少不必要的调用

但是我了解到使用静态变量会导致很多问题,所以不要使用它。 我考虑过什么是最好的。所以我搜索了一下并阅读了这篇文章

在循环内声明变量,好的做法还是坏的做法?

全局和静态变量的优化

函数中的静态变量

这篇文章说

but the initialization is likely to take place at each loop iteration." and "you probably should not worry about this kind of optimization.
而且我读过很多建议不要使用静态变量的帖子。

但在其他观点中,我读到建议使用静态变量来执行会产生高内存复制成本的操作。

根据我的 CS 知识水平,我不确定何时使用静态变量。

我应该衡量使用和不使用静态变量之间的性能差异来做出决定吗?但我预计随着我与更多人合作以及项目变得更大,这种方法将难以使用。我想在编写占整个项目一小部分的代码时,有一个决定是否使用它的依据。

所以我的问题是:使用静态变量进行优化的标准是什么?

c++ optimization static-variables
© www.soinside.com 2019 - 2024. All rights reserved.