gpt4 book ai didi

c++ - C++ 中的 i++ 和++i 之间有性能差异吗?

转载 作者:太空宇宙 更新时间:2023-11-04 14:12:14 25 4
gpt4 key购买 nike

我们有问题is there a performance difference between i++ and ++i in C?

C++ 的答案是什么?

最佳答案

[执行摘要:如果您没有使用 i++ 的特定原因,请使用 ++i。]

对于 C++,答案有点复杂。

如果 i 是简单类型(不是 C++ 类的实例),then the answer given for C ("No there is no performance difference")成立,因为编译器正在生成代码。

但是,如果 i 是 C++ 类的实例,则 i++++i 正在调用 operator++ 函数。下面是一对标准的函数:

Foo& Foo::operator++()   // called for ++i
{
this->data += 1;
return *this;
}

Foo Foo::operator++(int ignored_dummy_value) // called for i++
{
Foo tmp(*this); // variable "tmp" cannot be optimized away by the compiler
++(*this);
return tmp;
}

由于编译器不生成代码,而只是调用 operator++ 函数,因此无法优化掉 tmp 变量及其关联的复制构造函数。如果复制构造函数开销很大,那么这会对性能产生重大影响。

关于c++ - C++ 中的 i++ 和++i 之间有性能差异吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13663590/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com