Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/143.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 堆栈(重新)创建时的性能差异?_C++_Stack - Fatal编程技术网

C++ 堆栈(重新)创建时的性能差异?

C++ 堆栈(重新)创建时的性能差异?,c++,stack,C++,Stack,这两者之间是否存在性能差异: int test; void Update() { test +=2; } 这是: void Update() { int test; test +=2; } -- 我这样问是因为第二段代码更易于阅读(您不需要在类标题中声明),所以如果性能不低,我会使用它。性能差异,不太可能。这很容易测试,但取决于编译器。检查输出组件并进行一些基准测试。如果存在差异,则可能很小 然而,有一个主要的功能差异。第二个示例实际上是无用的,因为测试将在每次更新时

这两者之间是否存在性能差异:

int test;
void Update()
{
    test +=2;
}
这是:

void Update()
{
    int test;
    test +=2;
}
--


我这样问是因为第二段代码更易于阅读(您不需要在类标题中声明),所以如果性能不低,我会使用它。

性能差异,不太可能。这很容易测试,但取决于编译器。检查输出组件并进行一些基准测试。如果存在差异,则可能很小

然而,有一个主要的功能差异。第二个示例实际上是无用的,因为
测试
将在每次
更新
时重置。为了避免这种情况,可以将其声明为
static int test
,但实际上您已经再次编写了第一个示例


<>这是非常不同的事情,但也会有类似的性能。

这两个代码段之间的性能差异不大可能,只有分析代码可以可靠地说明,但是这里有一个重要的功能差异。 如果只在函数
update()
中需要
test
变量,则必须在函数中声明它。这样一来,变量在函数中的作用域是有限的。这样一个局部变量的生存期被限制在它所在的作用域内。在函数体中,直到右大括号
}

如果您希望
test
变量在函数调用中保持状态,那么它可以是函数内部声明的局部静态变量


在函数外部声明
test
将使其成为全局变量。并且它可以在同一文件中的任何函数中访问。它也是一个全局变量,生命周期将延长到程序结束。

您的测试不一致,因为测试的范围决定了所发生的事情的含义。谢谢,我知道函数的不同,我选择了一个糟糕的示例;)顺便说一句,如果我使用静态int;在函数中,这在类的实例中也是静态的吗?@Sapd:函数中声明的
static int
变量将在对函数的所有调用中共享。是的,它将在类的所有实例中维护。
int main()
{
    while(true)
        Update();
}