어차피 io는 느린걸
2009/02/08 17:02
C의 printf 계열보다 C++ 의 cout 등의 io 계열이 많이 느리다는건 익히 알려진 문제이다. 그런데 printf계열은 가변인자를 사용하여 printf와 비슷한 함수를 직접만드려면 어쩔수없이 va_list 계열의 매크로를 건드려야한다.
게다가 printf 계열은 버퍼오퍼플로를 막기위해 많은 변종들이 생겨나서 어떤게 표준인지 했갈리기도 한다. c99 표준이라고 알고 있는 snprintf는 Visual Studio 2008에서 조차 지원하지 않는다.
이런거 저런거 다 따져보면 차라리 C++ 계열의 io를 사용하는게 낫겠다는 생각이 들었다.
가변인자를 오버로딩으로 처리하면 formatting이 없는 경우에는 오히려 printf보다 빠르겠다는 생각도 들었다.
그래서 logger를 이런식으로 구현해봤다.
물론 formatStr로 비슷하게 구현되어 있다.
뭐, 어차피 io는 느린걸...
관련 자료들
- printf vs. cout
- ELogger.h
- EStringUtils.h
게다가 printf 계열은 버퍼오퍼플로를 막기위해 많은 변종들이 생겨나서 어떤게 표준인지 했갈리기도 한다. c99 표준이라고 알고 있는 snprintf는 Visual Studio 2008에서 조차 지원하지 않는다.
이런거 저런거 다 따져보면 차라리 C++ 계열의 io를 사용하는게 낫겠다는 생각이 들었다.
가변인자를 오버로딩으로 처리하면 formatting이 없는 경우에는 오히려 printf보다 빠르겠다는 생각도 들었다.
그래서 logger를 이런식으로 구현해봤다.
물론 formatStr로 비슷하게 구현되어 있다.
뭐, 어차피 io는 느린걸...
관련 자료들
- printf vs. cout
- ELogger.h
- EStringUtils.h
Trackback Address:http://poksion.cafe24.com/poklog/trackback/120
괜찮은 접근 방법인 것 같아요~ +_+
EStringUtils::formatStr 는 직접 만드신건가요? 아님 공개소스?
직접 만들고 있는 공개소스입니다 :)
글에 참고자료에있는 ELogger와 EStringUtils에 있고 무려 아직도 진행중인 end 프로젝트의 일부입니다.