[코드 최적화]프로그램 속도 향상 방법

2015.05.25 23:11


- 2008년 자료 발췌

1.  CPU 레지스터의 사용

자주 사용되는 변수는 cpu 레지스터에 저장

      명령어 : auto int nLoopCounter; register int nCount = 0;


2. Lookup Table 사용

예) cos 경우 배열[90]을 만들어 미리 저장해놓고 참조하여 사용

일천만번 회전 하는데 20초, 룩업 테이블 사용시 2초


3. 메모리 할당

GlobalAlloc() 윈도우 힙에 저장

CRT 힙의 경우 64k 할당 받아가 그 다음 2배씩 할당 받는데 실시간으로 계속 할 당 받는 부담

데이터가 큰 경우 윈도우 힙 사용

단점 : 윈도우 98 에서는 문제가 됨.

malloc 보다 new가 빠름.

단점 : new 로 할당한 함수는 delete가 안됨(윈도우98에서)

모트리 연구소의 경력 20년의 개발자들과 검증한 결과임.


4. 곱하기/나누기 연산의 개선

로그로 전환 -> 로그에서 지수끼리 더하기/빼기

다시 지수를 파워하면 결과 나옴.

함수 간 데이터 전달 시에 포인터로 전달


5. 영상 데이터 복사(CopyMeomory)

memcpy 보다 CopyMemory가 더 빠름

이유 : 4의 배수로 끝나는 데이터를 더 빠르게 복제하도록 만들었다고 함.

DirectDraw 서피에선 BitBlt 보다 FasrBlt가 속도가 10% 정도 향상(테스트 해봤 다고함)


6. 쓰레드 사용시

CreateThreadEX는 문제가 있다. 쓰레드가 돌아가다가 가끔씩 데이터 로스가 발생 한다. 마이크로소프트 사에서도 확인을 했다고 함.


, , ,