对象上的后增量与前增量运算符的速度
Speed of post-increment vs pre-increment operator on objects
我从历史上读到,由于各种原因,预增量更快/更好(而且它在现代编译器上应该没有意义)。但是,当对象发挥作用时,复制过程不需要额外的处理吗?
例如:
iterator iterator::operator++(
int)
{
iterator copy(*this);
_index++;
return copy;
}
iterator& iterator::operator++() {
_index++;
return *this;
}
预增量运算符需要复制操作。所以简单地这样做应该更慢:
loop {
--object
}
"pre vs post"的哲学是否仅适用于原语?
正是由于您描述的原因,在迭代器上使用预递增和前递减通常被认为是一种很好的做法。一个好的优化编译器可能能够删除不必要的副本,但你不能保证这一点。
至于对于原语来说,实际的预增量和后增量是更快还是更慢,这个建议至少十年来可能是不正确的。优化编译器非常擅长发现不必要的副本或操作,如果他们无法弄清楚不制作不必要的副本,我会感到惊讶。
相关文章:
- 为什么比较运算符如此快速
- C++映射:具有自定义类的运算符[]不起作用(总是返回0)
- 使用C++中的模板和运算符重载执行矩阵运算
- 为什么这个运算符<重载函数对 STL 算法不可见?
- 增量运算符与后缀混淆
- 一个关于在C++中重载布尔运算符的问题
- 运算符C++ "delete []"仅删除 2 个前值
- 模板类无法识别友元运算符
- 我可以使用条件运算符初始化C风格的字符串文字吗
- 为什么在读取文件大小时文件IO速度会发生变化
- 关闭||运算符优化
- 通过继承类使用来自不同命名空间的运算符
- C++Cast运算符过载
- 如何使用AngelScript注册SFML Vector2运算符
- 性能方面,按位运算符与正常模数的速度有多快
- 对象上的后增量与前增量运算符的速度
- C++中比较运算符的速度
- C语言中If-Else和三元运算符的速度差异
- 重载数组下标 [] 运算符速度慢
- 使用位运算符的位运算速度