kyuseo의 게임 프로그래밍
CStringf wsprintf str.Format 의 속도 비교 본문
개요.. |
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; } |