sunrinio-org / QnA

궁금한거 있으면 물어봐주세요
http://ask.sunrin.io/
26 stars 2 forks source link

++i vs i++ #136

Open sunrinio opened 7 years ago

sunrinio commented 7 years ago

어디선가 ++i가 i++보다 빠르다는 소리를 들은적이 잇어서 실험을 해봣죠 제가. c하고 java 하고 두 언어로 실험을 해봤는데 ++i와 i++의 속도 차이가 전혀? 없더군요. 근데 아무리 생각을 해봐도 i++보다는 ++i가 더 빨라야 정상 인거 같은데...........원래 속도가 같은 건가요?

wookje commented 7 years ago

컴파일러가 똑똑해서 그래요

wookje commented 7 years ago

최적화 해줘서 그래요

revsic commented 7 years ago

결론 부터 얘기 드리면, ++i 가 i++ 에 비해 기계어 수준에서 2개에서 3개 정도의 명령어가 덜 사용되구요, 이 차이는 정말 몇백억번, 몇천억밴 계산하는게 아니라면 인간이 느낄 수 없는 정도의 속도차이입니다. 깊게 말씀 드리면, ++i 의 경우에는 그냥 i 변수에 1을 더하는 명령어로 컴파일 되구요, i++ 의 경우에는 i 의 값을 임시 변수에 저장해두고, i 를 연산하고, 저장해둔 i 값에 1을 더해 본래 위치에 저장하는 방식으로 컴파일 됩니다. 이건 printf("%d", i++); 했을 때 i 가 출력 되고 1이 더해져야 하기 때문에 연산 과정이 조금 늘어나는 거구요. 앞서 말 했듯이, 정말 말도 안되게 계산을 많이 해야하는게 아니라면 크게 의미는 없어 보입니다.. 컴파일러 수준에서 정리해주기도 하구요.

junorouse commented 7 years ago

둘다 rcx로 돌아갈텐데여~!