2012-02-24 3 views
0

C++에서 생성 된 프로그램의 .exe가 있습니다.프로그램이 걸리는 시간을 측정하십시오.

그냥 프로그램에서 찍은 시간을 가져 오기 위해 삽입 할 수있는 간단한 스 니펫이 있습니까? 사용할 수있는 C++ 코드가 있지만 많이 조정할 필요가 없습니다.

+0

http://stackoverflow.com/questions/673523/how-to-measure-execution-time-of-command-in-windows-commandline 여러 솔루션을 제공합니다. – timrau

답변

2

Boost.Timers을 읽으십시오. 시간을 측정하는 코드 샘플은 다음과 같습니다

#include <boost/timer/timer.hpp> 

boost::timer t0; 
// do smth 
std::cout<<"elapsed: "<< t0.elapsed() << " s\n"; 
0

프로그램의 일부 (또는 전부)에 의해 걸리는 시간을 측정하는 간단한 방법은 시작에 현재 시간의 스냅 샷을 다음에서 빼기하는 것입니다 마지막의 현재 시각. Windows에서는이 경우 GetTickCount 함수를 사용할 수 있습니다. 나는 일반적으로 작은 도우미 구조체이 포장 :

struct Duration { 
    Duration(const char *name) 
    : m_start(::GetTickCount()), 
    m_name(name) 
{ } 

    ~Duration() { 
    std::cout << m_name << " executed in " << ::GetTickCount() - start << "ms" << std::endl; 
    } 

    const DWORD m_start; 
    const std::string m_name; 
}; 

당신은 다음과 같이 사용할 수 있습니다 다음 Duration 객체가 파괴 될 때

int main() 
{ 
    Duration d("Program"); 

    // Heavy work being done here 
} 

약간의 타이밍 정보는 stdout에 인쇄됩니다.

+1

아마도 학문적 인 코드에서는 괜찮 겠지만, 응용 프로그램/계산 논리는 물론 소멸자에 출력 문을 추가하는 것은 매우 나쁜 습관입니다. – Neowizard

+0

@Neowizard : 물론 동의 함. 그러나 코드의 일부분을 실행해야하는 시간을 알아 내고 싶다면 (객체 수명을 제한하기 위해 사용자 정의 범위를 도입 할 경우이 Duration 클래스를 멋지게 사용할 수 있습니다.) 멋지게 분리되고 모듈화 된 것을 원하지 않습니다 , 의존성 주입 기반 프로파일 링 프레임 워크. 어쨌든 커밋이 끝나지 않을 것입니다. 디버깅하는 동안 약간의 해킹 만하면됩니다. –

+0

동의합니다. 실행 시간 관련 테스트/디버깅을하는 간단한 방법입니다. 그냥 좋은 생산 아이디어가 아니라는 점을 지적하고 싶었습니다. – Neowizard

0

유닉스에서 실행 가능한 명령에 "time"접두어를 붙이면됩니다. 우연히 Cygwin이 설치된 경우 사용하는 것이 좋습니다. 그렇지 않으면 Performance Counters을 확인하십시오. 이는 MS 플랫폼에서 프로세스 성능 데이터의 근원입니다. 앱 종료 전에 한 가지 추가 메소드 호출로 고통을 피할 수 있어야합니다.

관련 문제