최적화(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 :: 이 글에는 트랙백을 보낼 수 없습니다


컴퓨터 견적...
2006/07/29 00:15

어머니 성화에 못 이기는척...하면서 은근슬쩍 내가 원하는 사양을...
대충 골라 보니...

인텔 코어 2 듀오 [각주]이른바 콘로, 펜티엄이란 이름은 이제 프로세서 시장에서 사라진다. 10년간 데스크탑PC 의 프로세서용으로 많은 모델을 출시한 펜티엄은 펜티엄D를 끝으로 [코어2듀오]란 이름의 새로운 프로세서로 대체된다.[/각주]E6400 [2.13Ghz, FSB 1066MHz, L2 2MB]
아수스(에스티컴) P5W DH Deluxe 콘로 [Core 2 Duo][Intel 975x, LGA775]
디지웍스 2GB DDR SDRAM [각주]콘로의 성능을 제대로 끌어내기 위해서는 DDR2 800의 램을 사용하면 좋다.[/각주][PC6400, DDR800]
웨스턴디지털 WD 1600JS 160GB SATA2[각주]IDE방식에서 SATA방식으로 단순히 속도만 빨라지는게 아니다. Plug&Play도 지원[/각주] 8MB [7200rpm]
삼성전기 3.5인치 FDD SFD-321B/LBL2 [블랙]
아수스(에스티컴) 지포스 EN6600 TD 256MB 128bit [PCi-E]
LG 플래트론 L1740PQ
LG전자 16X DVD-ROM GDR-8164B
마이크로닉스 ML-10 올블랙 [파워별도,ATX]
ZM 360B-APS
앤디코 AiO 이지랙 300 블랙 (5.25인치 베이 장착형)
넷메이트 NMU702 Plus (3.5  내외장 카드리더기/XD지원)
직접 조립을 할까? 이만원주고 조립을 해달라고 할까?
목하 고민중...

포토샵이고 뭐고 막 날라다닐듯 해서...
컴퓨터 본체 근처에 방충막을 쳐야겠어...
2006/07/29 00:15 2006/07/29 00:15
Trackback Address :: 이 글에는 트랙백을 보낼 수 없습니다

  • maro 2006/07/31 14:52  댓글주소  수정/삭제  댓글쓰기
    이제 팬티엄은 없구나 .. 우후훗
    하드에 관심 끊은지 언~~~ 수억년
    뭔소린지 암것도 몰것당 @.@
  • maro 2006/08/01 16:43  댓글주소  수정/삭제  댓글쓰기
    아하하핫 .. 알려주삼

  • 재밌는 코드...
    2006/07/27 08:52
    직업이 직업이다보니...
    남이 작성한 코드를 보다가 실로 경악을 금치못하는 코드를 볼때...
    난 썅칼라[각주][감탄사] 놀랍거나 혹은 일이 잘 안풀린데 하는말. 유사단어로 제기랄, 젠장, 된장등이 있음 [/각주]를 외친다...

    + swap 할때 temp 변수가 꼭 필요할까?
    void swap(int &a, int &b)
    {
      a = a + b;
      b = a - b;
      a = a - b;
    }
    XOR 를 이용하면 더 좋다.
    void swap(int &a, int &b)
    {
      a ^= b ^= a ^= b;
    }


    +  주석처리
    번갈아 가면서 테스트 해야할때 아래처럼 주석처리 해놓으면...
    //*/
    int a = 10;
    /*/
    int a = 20;
    //*/
    아랫줄이 필요하다면...
    /*/
    int a = 10;
    /*/
    int a = 20;
    //*/


    + 리턴값으로...
    if((code >= KEYCODE_0) && (code <= KEYCODE_9))
    {
      if(ShiftKeyPressed())
      {
           return ")!@#$%^&*("[code - KEYCODE_0];
      }
      else
      {
           return '0' + (code - KEYCODE_0);
      }
    }



    아! 머리좋은 인간들이여...코딩하지말고 정치해라...

    2006/07/27 08:52 2006/07/27 08:52
    Trackback Address :: 이 글에는 트랙백을 보낼 수 없습니다

    1. Subject: 코드 주석 처리 팁

      Tracked from RERIC.COM 2006/07/27 09:27  삭제

      두 개의 서로 다른 코드로 테스트 할 때 유용하다. /**/ Run here /*/ code /**/ /** code /*/ Run here /**/ via http://eclipsians.net/more.php?id=37_0_1_10_M //*/ Run here /*/ code //*/ //* code /*/ Run here //*/ via http://hongyver.pe...

  • TWEETY 2006/07/27 13:49  댓글주소  수정/삭제  댓글쓰기
    return ";)!@#$%^&*("[code - KEYCODE_0];

    이게 모에요??? -.-a
    • hongyver 2006/07/27 14:02  댓글주소  수정/삭제
      "!@#$%^&*("[0] = !
      "!@#$%^&*("[1] = @

      즉 "!@#$%^&*(" 는 배열의 포인터고..
      배열[n] 번째 값을 취한다는거지...
  • 우스 2007/02/01 00:24  댓글주소  수정/삭제  댓글쓰기
    썅칼라!!!!!!!!!!!!!!!!!!!!!!!!!!! 우와~~~~
  • 김순철 2007/03/04 10:05  댓글주소  수정/삭제  댓글쓰기
    어허! 좋은 내용이네요. 퍼가도 되죠? 퍼갈께요~
  • 구루마루 2008/11/26 12:16  댓글주소  수정/삭제  댓글쓰기
    이야.. 마지막 부분은 생각도 못했던 코드군요.