출처 :  http://blog.naver.com/neojzs.do


1. 컴파일러의 최적화 옵션에서 '속도 최적화'대신에 '코드 크기 최소화' 설정이 캐쉬 성능을 향상시켜 좀 더 빠른 코드를 얻을 수 있게 한다.

2. 각 CPU(인텔의 SSE, SSE2 / AMD의 3DNow )의 SIMD 를 활용하는 함수를 만들어 사용해라

3. 가능한 나눗셈 연산을 최소화해라.
예)
<수정전>
b = a / m;  
c = d / m;

<수정후>
m = 1 / m;
b = a * m;
c = d * m;

4. switch문을 쓸 때 연속된 수치를 사용해라. 그러면 VC가 컴파일할 때 테이블형태로 만들어 조건분기보다 빠르게 사용된다.
예)
case 0 :  
case 1 :
case 2 :

예2)
case 10 :
case 9 :
case 8 :

잘못된 예)
case 2 :
case 4 :
case 3 :

5. 펜티움 Pro이상에서는 CMOVxx / FCMOVxx 같은 조건적 이동 명령을 이용할 수 있다. 간단한 내용은 IF문보다 다음과 같은 코드를 사용해라.

A == 0 ? choice1 : choice2;

6. 자주 사용하는 자료 구조는 32바이트의 배수로 정렬시켜 사용해라. 컴퓨터의 캐쉬라인을 최적으로 사용할 수 있기 때문에 전체 성능이 크게 좋아진다. 펜티움 4는 L1의 캐시라인크기가 64바이트이고 L2가 128바이트, AMD 애슬론은 L1, L2가 64바이트이다. 이 기법을 패딩(Padding)이라고 한다.

7. sin, cos, tan, exp, arcsin등의 수학 함수는 가급적 피하고 룩업 테이블이나 비슷한 형태로 간략하게 함수로 만들어서 사용해라.

8. 부동 소수점은 가급적 double보다 float를 사용해라. double의 나눗셈은 39사이클이 걸리지만 float은 19사이클만 걸린다. (단, 2의 제곱수로 나누면 8사이클정도만 걸린다) 그리고 float형 일때는 반드시 뒤에 f를 붙여라. float a = 1.0; 보다 float a = 1.0f; 가 더 빠르다.

9. 순서에 상관이 없다면 후연산자 보다 선연산자를 사용해라. a++; 보다 ++a;를 사용하라는 것이다.

10. 가능하다면 const를 사용해라. 컴파일러가 좀더 최적화가 잘 해줄 가능성이 생기게 된다.

11. 메모리 관리 함수는 따로 만들어서 사용하는 것이 좋다. malloc과 free는 느리기 때문에 시작할 때 메모리를 많이 잡은 뒤 관리해서 사용하는 것이 좋다. 퀘이크1 이 좋은 예이다

'Programing > 메모리 관리' 카테고리의 다른 글

코드 최적화에 대한 Tip  (0) 2010.09.21
Posted by 패스맨

댓글을 달아 주세요


군생활 체험 게임.
첫 팀프로젝트.

visual studio 2005
cdx lib

Posted by 패스맨

댓글을 달아 주세요





이걸 누가 보겠냐만은 ....
그냥 썩혀서 공중분해 하는 것보다는 나을것 같네요.


<리포트 내용중 일부...>

새벽시간대에 게임이용요금을 지불하면서 게임(mmorpg: ex>“리니지“로 가정)에 접속하는 유저는 누구인가?
라는 질문에

위 자료들를 토대로 답해본다면 직업에 상관없이(비용지불에 직업이 상관없는 이유: 굳이 직업이 없어도 게임을 이용하는데 드는 비용은 게임아이템현금거래등, 주위 가족,지인의 도움등 으로 얼마든지 구할 수 있다.) 게임이용요금을 지불할 능력을 갖춘 예전부터 계속해서 게임을 즐겨오던 20대 후반부터 30대 중후반까지의 올드 유저일 가능성이 가장 크다.

게임비용지불에 직업이 상관없는 반면 게임이용시간대에는 직업이 꽤 크게 작용할 것이다......

...
.......
...생략( 첨부 파일 참조 )
Posted by 패스맨

댓글을 달아 주세요

  1. ISNetwork 2010.09.10 22:00 신고 Address Modify/Delete Reply

    좋은 글 읽고갑니다 ^^
    제 블로그도 한번 들려주시면 감사하겠습니다.