c++ - 变量会影响性能吗?

标签 c++ performance qt variables

我在 QT 5.6 中使用 C++。我有以下两种样式的简单控制台应用程序:

//First style

qstring x = “Hi!”;

void func()
{
        QTextStream(stdout) << x;
}

int main()
{
        while (true)
        {
                func_one();
        }
}

//Second style

void func()
{
        QTextStream(stdout) << “Hi!”;
}

int main()
{
        while (true)
        {
                func();
        }
}

这会给 cpu 带来更大的压力,因此性能会降低,这可能没有太大区别,但是当我们将其应用于大规模应用时,例如每 2 秒建立一次连接的服务器,就会出现类似于循环的情况上面有多个变量(但不是相同的变量和数据),较少的资源使用可以通过较少的资源使用来显着提高性能。所以使用变量可以提高性能,但我只会在我的函数中使用该变量一次,尽管该函数将被重复调用,或者使用变量会减慢程序速度,因为它必须重复检查 ram 的“x”值在哪里” 存储然后检索数据?

编辑 1:

我不会在我的代码中再次使用该变量,我们可以认为没有编译器优化。 @DrDonut 你给出的链接中的答案也没有回答 $array === (array) $arrayis_array($array) 快,即它是微优化,我还想问第二种风格是微优化还是会损害性能。

最佳答案

您的示例很糟糕,因为可能需要进行编译器优化,并且不清楚您会在不同的地方使用这个变量,还是它只是一个将被丢弃的测试代码。

但通常您的优化方式是错误的。优化单个变量或单个函数是没有意义的。你不应该猜测你的程序将把时间花在哪里,你应该首先按照它工作的方式编写你的程序并且看起来不错。

程序运行后,如果你发现它的性能不好,你应该寻找瓶颈——程序花费大量时间的地方。它们可以在分析器或调试器的帮助下找到,而不是靠猜测。

当你找到它们时,你需要优化这些关键的地方。

了解 premature optimization

关于c++ - 变量会影响性能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37716998/

相关文章:

c++ - std::initializer_list 和 std::make_shared: 参数太多...预期 3 提供 0

c++ - 什么触发文件结束?

python - 为什么Python中的这段代码比C++快得多?

c++ - Qt raw 与 std::shared_ptr

qt - 如何使 QDialog 仅对其非模态父窗口是模态的,而不是对所有祖父窗口?

Qt 覆盖小部件快捷方式(窗口快捷方式)

c++ - CArray 的 ARG_TYPE 是否应该是 const & 或者不是

c++ - 为什么 const char* 不适用于 stringstream 和 boost 的 read_json?

database - PL/SQL - NOCOPY 参数以提高性能

python - 如何提高积分速度?