최적화(Optimization)
2006/08/01 09:21
비주얼스튜디오에서 릴리즈모드시 최적화 옵션은 Maxmize Speed(/O2)로 설정되어 있다.
최종 컴파일시 실행코드를 가장빠른 코드로 실행 되도록 컴파일 하겠다는건데...
아래의 예제를 보자...
j의 값이 for문 내부에서 변하지 않으니 for문 밖에서 한번의 계산을 수행하여 속도를 높이겠다는 의도인데...
만약 function 내부에서 j값을 참조하여 값이 변한다거나 다른 Thread에서 j값을 참조한다거나 하면...(과장된 가정이긴하다...)
의도와는 달리 배는 산으로 간다...
늘 그렇듯이 최고가 능사는 아니다 싶다...
최적화옵션은 써야하고 그러한 문제를 방지하고 싶다면 volatile 라는 키워드를 사용하면 된다.
즉 volatile int j; 라고 선언하면 된다.
최종 컴파일시 실행코드를 가장빠른 코드로 실행 되도록 컴파일 하겠다는건데...
아래의 예제를 보자...
for ( int i = 0; i < 100; ++i )최적화 옵션을 키고 컴파일을 수행한다면...
{
j = sqrtf( 0.5f ) * function(1.0, 2.0);
// 다른 작업수행
}
j = sqrtf( 0.5f ) * function(1.0, 2.0);
for ( int i = 0; i < 100; ++i )
{
// 다른작업 수행
}
j의 값이 for문 내부에서 변하지 않으니 for문 밖에서 한번의 계산을 수행하여 속도를 높이겠다는 의도인데...
만약 function 내부에서 j값을 참조하여 값이 변한다거나 다른 Thread에서 j값을 참조한다거나 하면...(과장된 가정이긴하다...)
의도와는 달리 배는 산으로 간다...
늘 그렇듯이 최고가 능사는 아니다 싶다...
최적화옵션은 써야하고 그러한 문제를 방지하고 싶다면 volatile 라는 키워드를 사용하면 된다.
즉 volatile int j; 라고 선언하면 된다.
Trackback Address :: 이 글에는 트랙백을 보낼 수 없습니다