|
|||||||||
경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지 |
|
글쎄요...주로 저는 MemoryMapFile을 쓰는데 Trace에서는 그냥 WM_COPYDATA로 쭈욱 가네요...
맵파일을 쓰려면 이것저것 share하는데 있어서 Lock, Unlock해야되는것을 생각하니 Trace프로그램 코딩하는데 시간이 걸릴거 같아서 윈도우가 알아서 해주는 메시지로 그냥 쓰기로 했습니다. 대신 Trace에서 WM_CopyData메시지 처리하는 부분에서 최소한의 시간만 소요하게 하는 방식으로 해서 전에 버젼보다는 속도를 좀 증가시켰습니다. 지금 이 Trace로 쓰레드 20여개 정도 돌아가는 프로그램 디버깅하는데도 나름 잘 돌아가던데요... 좀더 속도를 요하는 환경이 어떤거길래....궁금하네요... 비젼쪽이 그런건가요? 아뇨~!
꼭 대단한 속도를 요구하는 환경이 이어서 그런것은 아니구요 저희회사에서도 위와같은 방식으로 Loging-Lib와 어플을 만들어 쓰고 있는데요 그냥 좀더 좋은 방법이 없나 고민해 본것입니다. ------------------------------------------------------------ WM_COPYDATA 를 이용한 방식이 메세지 하나에 마이크로(수십~수백 usec) 단위이긴 하지만 적은 시간은 아닌것 같구요 one-process(multi-thread) 환경이 아니라면 근야 file에 기록하는것이 빠르고, lock도 critical_section으로 하면 쉽고 빠르고 한데.. multi-process환경은.. lock거는데 mutex등을 이용하니 상당히 시간이 걸리더군요 SendMessage나 별 차이가 없는듯... ... OutputDebugString이 좀더 빠르다던데.. 테스트해보진 못했네요 ... Hoo Technologies Hoo WinTail 툴이 있는데 이게 장성호님이 말씀하신 방법으로 하는거 같습니다.
http://www.hootech.com/WinTail/ 그런데 언젠가 이 툴을 깔아서 해본거 같은데 속도가 그다지 나온거 같지 않던데요...뭐 정확한 기억은 아니지만.... 하여튼 자료조사때 Trace관련 툴들을 깔아보고 테스트 해봤을때 속도 체크를 우선 했는데 다들 맘에 안들었던 기억입니다. c++ builder xe2 에서
wsprintf(szBuffer + strlen(szBuffer), "|14|%s|%d|%d|%d|%d|%s|%s", process, level, mode, color, m.line, m.func, m.file); 부분에서 에러가 발생 하는데 어떻게 해야 하나요? 에러는 char <-> wchar_t 의 형 변환 문제 같습니다. 에러가 몇개 더 발생하나, L"" 매크로 로 수정 하니 문제 없는데, 다른 부분은 어떻게 해야 하는지 모르겠네요. [BCC32 Error] Trace.cpp(63): E2034 Cannot convert 'char *' to 'wchar_t *' Full parser context Trace.cpp(52): parsing: void TRACE4(char *,int,int,int,char *,...) [BCC32 Error] Trace.cpp(63): E2340 Type mismatch in parameter 1 (wanted 'wchar_t *', got 'char *') Full parser context Trace.cpp(52): parsing: void TRACE4(char *,int,int,int,char *,...) [BCC32 Error] Trace.cpp(104): E2034 Cannot convert 'char *' to 'wchar_t *' Full parser context Trace.cpp(93): parsing: void TRACE2(char *,...) [BCC32 Error] Trace.cpp(104): E2340 Type mismatch in parameter 1 (wanted 'wchar_t *', got 'char *') Full parser context Trace.cpp(93): parsing: void TRACE2(char *,...) [BCC32 Error] Trace.cpp(160): E2034 Cannot convert 'char[4097]' to 'const wchar_t *' Full parser context Trace.cpp(152): parsing: void DEBUG(char *,...) [BCC32 Error] Trace.cpp(160): E2342 Type mismatch in parameter 'lpOutputString' (wanted 'const wchar_t *', got 'char *') Full parser context Trace.cpp(152): parsing: void DEBUG(char *,...) 관련 글 리스트
|
Copyright © 1999-2015, borlandforum.com. All right reserved. |
WM_COPYDATA 말고 multi-thread , multi-process환경에서 좀더 빠른 방법이 없을까요?