for(int i=0;i<5;i++)
if(i<5)
printf("나는 초보다")
라는 반복문 코드보다
그냥 printf("나는 초보다")
printf("나는 초보다")
printf("나는 초보다")
printf("나는 초보다")
printf("나는 초보다")
라고 단순히 5번 반복한 코드가 조건문이 안 들어가니깐 상식적으로 실행속도가 빠르잔아
그런데 이걸 컴파일러가 알아서 두 코드가 실행속도가 같게끔 최적화된 결과물을 내주는거임?
for(int i=0;i<5;i++)
if(i<5)
printf("나는 초보다")
라는 반복문 코드보다
그냥 printf("나는 초보다")
printf("나는 초보다")
printf("나는 초보다")
printf("나는 초보다")
printf("나는 초보다")
라고 단순히 5번 반복한 코드가 조건문이 안 들어가니깐 상식적으로 실행속도가 빠르잔아
그런데 이걸 컴파일러가 알아서 두 코드가 실행속도가 같게끔 최적화된 결과물을 내주는거임?
디스어셈블해서 확인해보는거시야
VS2010 최적화 디폴트에서 저거 될걸?아마...
loop unrolling
그렇게 뽑아주는 애도 있지만 안 그런 애들도 있는거고 최적화가 꼭 속도가 아니라 크기에 더 치중하는 환경도 있고 그건 컴파일러 옵션 따라 다른거고. 컴파일러마다 빌트인 함수 같은걸로 어떤 분기가 더 히트가 잘된다등의 힌트도 줄 수 있는거고. 사실 질문이 뭘 묻고 있는진 모르겠넹;;
앞에 흉이 얘기한 대로 최적화 결과는 무조건 생성된 코드로 확인하는게 정확함
아 그렇구나. 옵션따라서 해주는군. 답변 떙큐