kyuseo의 게임 프로그래밍

CStringf wsprintf str.Format 의 속도 비교 본문

C++ 개발

CStringf wsprintf str.Format 의 속도 비교

kyuseo 2008. 3. 11. 19:23

개요..

 

CStringf wsprintf str.Format 의 속도 비교해봅니다.

 

CStringf 가 이상하게도 더 빠른 결과를 얻을 수 있습니다. 아무래도 CString::FormatV 함수가 매우 느리기 때문인듯합니다.

 

또한 릴리즈 버전에서의 최적화가 되기 때문에 일부러 for 문안에 int 형과 같은 타이트한 객체선언을 밖에 할 필요가 없습니다.

 

상황에 따라 코드의 표현상 이점에 따라 행동하도록 합시다.

 

 

비교 분석

 

-------- 이론상 최적화 코드 -------------

 

DWORD n;

for( int i=0; i<100; i++ )

{

    n = a[i].GetCount();

    n 에대한 처리

}

 

 

-------- 최적화 코드는 아니지만 속도상 아무런 상관없는 코드 -------------

 

for( int i=0; i<100; i++ )

{

    DWORD n = a[i].GetCount();

    n 에대한 처리

}

 

 

--------------------- 디버그 버젼 결과

 

Hello from MFC!

CStringf 걸린시간 : 2287

CStringfInline 걸린시간 : 2341

CString Format 걸린시간 : 2910

char[] wsprintf 걸린시간 : 497

 

 

--------------------- 릴리즈 버젼 결과

 

Hello from MFC!

CStringf 걸린시간 : 792

CStringfInline 걸린시간 : 764

CString Format 걸린시간 : 1782

char[] wsprintf 걸린시간 : 455

 

 

 

CStringf 소스코드

 

inline CString CStringf( LPCSTR fmt, ... )

{

va_list vl;

va_start( vl, fmt );

 

CString s;

s.FormatV( fmt, vl );

 

return s;

}