2011-05-10 7 views
0

임베디드 장치와 통신하는 "유산"문제가 있습니다.이 응용 프로그램은 자동차의 Electonic Control Units (ECU)이 "app"-> USB 포트를 통해 자동차 ECU와 통신 -> 일부 장치 -> 자동차 ECU를 통해 통신합니다.통신 타이밍 문제 해결 (C++ Windows 응용 프로그램)

거기에 약간의 타이밍 문제가있는 것 같습니다 (전화/응답은 일반적으로 100 밀리 초가되지 않아야합니다). 그리고 나는이 모든 것을 측정하기 위해 당신이 무엇을 추천하는지 궁금합니다. 나는 이런 종류의 문제에 대한 로거가 물론 도움이된다고 생각했지만, 많은 스레딩과 아마도 동기화가 관련되어 있음을 이해했거나 보았을 때. 스레딩은 물론 몇 가지 문제를 제기 할 수 있습니다. 스레드/동기화와 관련된 타이밍의 "전반적인"관점을 가질 수있는 방법이 있습니까? 예를 들어 스레드와 동기화 문제가있는 경우 프로파일 러 (샘플 데이터)가 예를 들어 대기/동기화와 관련된 타이밍을 알 수있는 방법이 있습니까? Visual Studio 2008을 사용하고 있지만 VS 2010을 사용하면 더 많은 도움이 될 수 있다고 생각합니다.

여기에 대해 Visual Studio Profiler (팀 에디션이 필요합니까?)를 권장합니까 아니면 다른 것이 있습니까? 감사

-Ghita

+0

디버거에서 코드를 실행할 수 있습니까? [그럼 당신은 이것을 시도 할 수 있습니다.] (http://stackoverflow.com/questions/375913/what-can-i-use-to-profile-c-code-in-linux/378024#378024) –

+1

100ms는 거대합니다. 시간 ... 나는 당신이 무언가를 쫓고 있다고 생각하고 흥미로운 장소에 로깅을 두는 것만으로도 문제가 무엇인지 알 수있을 것입니다 ... – 6502

+0

6502, 로깅에 의해서도이 문제를 해결할 생각입니다. 메모리 로거 ("프로파일 링"/ 프로그램의 끝에있는 정보 만 플러시)를 완료합니다. 다행스럽게도 핫스팟을 감지 할 수있는 코드를 충분히 이해할 수 있기를 바랍니다. – Ghita

답변

0

이 질문에 대한 꽤있어왔다. 이 솔루션은 "메모리 로거 ("프로파일 링 "/ 프로그램 끝에있는 정보 만 플러시)를 완료했습니다." Windows에서의 성능 추적 방법은 Windows의 이벤트 추적 (ETW)을 사용하는 것이 좋지만 요즘에는 로깅 공급자가 이벤트 추적 정보의 소비자와 연결을 끊어서 로깅 응용 프로그램은 로깅에 영향을 미치지 않습니다 (실제 충돌이 발생한 지점까지). 또한 다른 성능상의 이점을 가지고 있습니다. 성능 저하가 거의없이 제작자 응용 프로그램에서 생성되는 수천 개의 이벤트를 처리 할 수 ​​있다고합니다.

관련 문제