Purpose-built post

왜 이런 생각을 하게 되었냐면, .. KGCA15기 프로그래밍반 짝궁인 선호가 루프를 돌릴때 for을 사용 하여 for(;;;) 을 쓰길래, 왜 그렇게 쓰는지 물어 보니.. .. 명서인 "C programing language"에는 모두 이렇게 되어 있더라. 라고 말해 주었다.. 혹시나 해서.. 집에와 MSVC2005 로 어샘블리어 비교를 하기 시작하여, 그 결과를 올리게 된다.

Content

결론을 내기전에 우선 두가지 측면에서 while과 for을 봐야한다. 우선 조건이 있는 루프를 돌때 예(while(비교), for(;비교;))

1. 조건문이 있는 while과 for 문 비교

while


이 코드는 이렇게 해석이 된다.


for


이 코드는 이렇게 해석 된다.



1-1. 조건문이 있는 for 과 while 차이

진행 순서만 다를 뿐, 차이는 없다. 그렇다면 왜 명서인 "C programing language" 루프를 돌릴 때 for을 사용 하는 것일까?

2. 조건문이 없을 때

while

어샘블리어 해석

for



어샘블리어 해석

2-1 조건문이 없을 때, 차이점

무한 loop 에선 while보다 for문이 명령어 3개를 더 적게 사용 하기 때문에, for 문이 더 빠르다. 하지만, 그 성능 차이는 미미하다.

3. 최종 결론

성능에 차이는 있으나, 미미하다. 그러므로 상황에 맞는 가독성이 높은 쪽으로 선택하는게 옳다고 나는 생각한다.

Digression

  • 컴파일러마다 어셈블리 코드 만드는게 달라, 다른 환경에선 똑같은 어셈코드를 만들 수 있다
  • for 과 while은 그 성능 보다는(연산 3개를 덜하거나 똑같을 수 있기에), 가독성 위주로 우선 코딩을 하고, 퍼포먼스 테스트 후에 이 것이 문제일 경우, 코드를 바꾸는 게 좋다.


  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 라이프코리아트위터 공유하기
  • shared
  • 카카오스토리 공유하기

댓글을 달아 주세요

">
  1. Favicon of http://codeuser.tistory.com 재돌이
    2008.07.07 19:14

    ㅎㅎ 저도 문제 풀이할 때 저걸 한번씩 쓰는데, 내부 작동 원리는 찾아볼 생각도 못했습니다. 감사합니다.