最近发现i++与++i的效率原来不同。
我一直是用
for (int i = 0; i < n; i++)
但是++i效率更高!
for (int i = 0; i < n; ++i)
i++:需要申请一个临时变量保存i进行后续计算,再执行自增。
++i:直接原地自增,再进行后续计算,无需申请内存。
这个微小的差别在数据量较大的时候会有明显的效率差别,所以我以后还是用++i吧(苦笑
下面分享一下两者具体实现的区别:
- i++
const int int::operator++(int)
{
int oldValue = *this;
++(*this);
return oldValue;
}
可以看到,需要申请临时变量oldValue保存初始值。
- ++i
int& int::operator++()
{
*this += 1;
return *this;
}
直接自增并返回,无需申请内存。