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개를 덜하거나 똑같을 수 있기에), 가독성 위주로 우선 코딩을 하고, 퍼포먼스 테스트 후에 이 것이 문제일 경우, 코드를 바꾸는 게 좋다.
'연구실 > 파편화된 기록들' 카테고리의 다른 글
2-02 디바이스 : Direct3D의 핵심 객체 (0) | 2008.07.05 |
---|---|
2장. 따라해 보기 : 3차원 기초 이론과 Direct3D의 최소한의 이해 (0) | 2008.07.05 |
1부 1장 기초 영어와 이론 (0) | 2008.07.05 |
1부 기초 지식 : 3D 프로그래밍으로의 첫 걸음 (0) | 2008.07.04 |
IT EXPERT 3D 게임 프로그래밍 책 (0) | 2008.07.04 |
MySQL 명령어 모음집 (1) | 2008.06.14 |
항목 6: typedef, 포인터 가지고 장난 치지 마라. (1) | 2008.06.09 |
항목 5: 어떠한 추상적 개념에 대한 이해를 놓치지 말라. (0) | 2008.06.07 |
항목 4: static 키워드를 간과하지 말자. (0) | 2008.06.07 |
항목 3: 함수 내부에서 선언된 객체를 참조자로 반환 하지 마라! (0) | 2008.06.07 |
최근댓글