'volatile'에 해당되는 글 1건

  1. 2006/08/01 최적화(Optimization)

최적화(Optimization)
2006/08/01 09:21
비주얼스튜디오에서 릴리즈모드시 최적화 옵션은 Maxmize Speed(/O2)로 설정되어 있다.
최종 컴파일시 실행코드를 가장빠른 코드로 실행 되도록 컴파일 하겠다는건데...
아래의 예제를 보자...

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; 라고 선언하면 된다.
2006/08/01 09:21 2006/08/01 09:21
Trackback Address :: 이 글에는 트랙백을 보낼 수 없습니다