2010-05-24 3 views
1

하나의 표준 C 라이브러리 함수가 너무 오래 걸려서 전체 시스템 (프로세스 집합)이 기본적으로 "딸꾹질"이라고 생각하는 성능 문제가 있습니다. 라이브러리 함수 호출에 주석을 달아 주면 딸꾹질이 사라집니다. 이렇게하면 이런 유형의 것을 증명하기 위해 어떤 표준 방법이 있는지 조사하게되었습니다. 함수가 전체 시스템을 잠깐 멈추게하는지 (다른 프로세스가 일시적으로 굶주림을 유발하는지 확인하기 위해) 함수를 테스트하는 가장 좋은 방법은 무엇입니까?C++ Asymptotic Profiling

필자는 적어도 호출되는 기능과 보이는 고정 기능을 명확하게 상관시키고 싶습니다.

감사

+0

점근 적 복잡성과 관련이있는 것 같지 않습니다. 그것이 당신이 우리에게 어떤 기능인지 말해 주면 도움이 될 수도 있습니다. –

답변

0

이 물건을 결정하는 가장 좋은 방법은 각 함수 호출에 소요되는 시간에 대한 정보를 얻을 수있는 프로파일 링 도구를 사용하는 것입니다.

메모리 블록을 예약하는 기능을 설정하지 못했습니다. 그런 다음 코드에서 다양한 시점에 현재 시간을 포함하여 메모리에 문자열을 씁니다. (이렇게하면 디스플레이에 쓰는 것과 관련된 지연을 피할 수 있습니다). 코드를 실행 한 후 메모리를 꺼내서 구문 분석하여 코드 부분이 차지하는 시간을 결정하십시오.

0

나는 "딸꾹질"이 무슨 뜻인지 알아 내려고하고 있습니다. 내가 프로그램을 상상하고있어이 같은 작업을 수행합니다

while (...){ 
    // 1. do some computing and/or file I/O 
    // 2. print something to the console or move something on the screen 
} 

정상적으로 인쇄 또는 그래픽 출력이 주관적으로 연속 방법에 따라 콧노래하지만, 컴퓨팅 부분이 더 오래 걸립니다 동안 때때로, 동결 나타납니다

.

그게 무슨 뜻입니까? 그것은 거의 모든 지출 할 수 있도록

그렇다면, 내가 2 단계에서 가장 항상 실행 상태에 의심하지만, 딸꾹질의 상태로 단계에서 시간을 보내는 1.

나는, 2 단계를 주석 것 딸꾹질 상태에있는 시간이고, 그 후에는 단지 pause it under the debugger입니다. 그 기술은 아주 적은 노력으로 문제가 무엇인지 정확히 알려줍니다.