ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 증감연산자 i++와 ++i의 차이
    Legacy/General 2015. 7. 17. 14:08
    728x90

    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를 전위 ++ 연산자로 증가시키면 성능상의 이점을 기대할 수 있다.

Designed by Tistory.