전위 연산자(++i)와 후위 연산자(i++)는 모두 i += 1을 수행하지만
전위 연산자는 1이 증가된 값을, 후위 연산자는 1이 증가하기 전 값을 반환한다.
여기서, 후위 연산자는 연산이 이뤄지기 전 값을 저장하기 위해 임시 변수를 만든다.
따라서 i++이 ++i 보다 느릴 것이라 생각했지만...
요즘 컴파일러들은 최적화가 잘 되어 i++이든 ++i 이든 똑같이 나온다.
하지만 이는 일반적인 변수에서 그렇고
i가 클래스의 인스턴스의 경우 차이가 있다.
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;
}
후위 연산의 경우 복사 생성자를 실행시켜 임시 변수를 만들고 반환하는 데,
이때 복사생성자가 컴파일러에 의해 자동으로 최적화 되지 않는다.

결론 : 특별한 이유가 있는 거 아니면 전위 연산자를 사용하도록 하자.
[참고]
C++에서의 전위연산자postfix와 후위연산자suffix의 성능 차이
원본글: Is there a performance difference between i++ and ++i in C++?
ebongzzang.github.io
컨테이너 순환문에서는 전위 증가 연산자를 사용하자
링크 : 어셈블리 기본 int i = 0;int iPrefix = ++i;// 전위연산int iPostfix = i++;// 후위연산 해당 코드의 결과는 프로그래머라면 누구나 알 수 있을 것이다. 그런데 두 연산자는 속도의 차이가 있을까? 필자
durai.tistory.com
https://stackoverflow.com/questions/24901/is-there-a-performance-difference-between-i-and-i-in-c
Is there a performance difference between i++ and ++i in C++?
We have the question is there a performance difference between i++ and ++i in C? What's the answer for C++?
stackoverflow.com
'언어 > C++' 카테고리의 다른 글
| [C++] STL - 연관 컨테이너 (0) | 2024.05.12 |
|---|---|
| [C++] Struct 와 Class 의 차이 (0) | 2024.03.09 |
| [C++] 표준 템플릿 라이브러리 (STL) (0) | 2023.12.31 |
| [C++] new와 delete (0) | 2023.12.19 |
| [C++] 레퍼런스(reference, 참조자) (0) | 2023.12.16 |