-
증감연산자 i++와 ++i의 차이Legacy/General 2015. 7. 17. 14:08728x90
for 루프를 사용하다보면 자주 사용하게 되는 변수 i
이 i 변수에 1을 더하는 i++와 ++i는 서로 차이가 있다.
결론부터 말하면 ++i가 더 성능이 좋다고 할 수 있다.
++i는 내부적으로 다음과 같이 동작한다.
1. i의 값을 1 더한다.
2. i의 값을 반환한다.
i++는 내부적으로 다음과 같이 동작한다.
1. i의 현재 값을 보관한다. (현재 실행되는 명령문에서는 이 보관된 값이 사용되어야 하니까)
2. i의 값을 1 더한다.
3. 보관했던 값을 반환한다.
2동작을 수행하는 것과 3동작을 수행하는 것(i++은 ++i에 보관하는 과정이 추가된 것이므로)은 많은 경우 성능 차이를 가져온다.
i++와 ++i는 현재 행에서 사용되는 값이 원래의 값을 사용하는가 1이 더해진 값을 사용하는가의 차이도 존재하지만
for(i = 0; i < 10; i++)에서와 같이 단독으로도 충분히 사용된다. 이러한 경우 i++보다는 ++i를 사용하는 것이 성능상 더 좋다고 할 수 있다.
물론, 똑똑한 컴파일러는 최적화를 수행해준다. i++로 코드를 작성했다고 하더라도 실행에 영향이 없는 내용은 ++i로 바꿔서 컴파일한다.
하지만! C++에서 연산자 오버로딩을 해서 전위, 후위 ++연산자를 직접 만든 경우에는 컴파일러가 최적화를 수행해 줄 수 없다.
때문에 이 경우 성능차이가 나게된다.
마찬가지로 C++ STL에서 vector, list 등을 사용할때 iterator를 전위 ++ 연산자로 증가시키면 성능상의 이점을 기대할 수 있다.
'Legacy > General' 카테고리의 다른 글
프레임워크와 라이브러리는 어떻게 다른가? (0) 2015.10.10 요즘 뜨는 4대 프로그래밍 언어 (0) 2015.06.27 [OOP] 객체지향 프로그래밍 (0) 2015.06.10