2012-10-11 4 views
0

내가 생산 로그에 difftime 양을 통역 문제입니다 :C++ time.h difftime

좀 메소드 호출 시간을 측정하고, 나는이 구문, 그것을 로그 :

time_t end, start ; 

time(&start); 

obj->sqp_func(this); 

time(&end); 

t_time = difftime(end, start) ; 

sqp << "time " << endl ; 
sqp << (double) end << endl ; 
sqp << (double) start << endl ; 
sqp << (double) t_time << endl ; 

여기서 sqpofstream 유형입니다. 인쇄해야 t_time (유형 double와) 내가 얻을

, 값 (210)

그 210초 있습니까? 잘 렸는지, 바닥에 깔려 있습니까?

예를 들어 몇 초 만에 결과를 얻을 수 있습니까?

+1

'std :: chrono'를 사용하는 것이 더 나았습니다. –

+0

@MarkGarcia 일부 C++ 11 일 것 같습니까? 누가 C++ 11 BTW (VS 버전)를 컴파일 할 수 있습니까? – octoback

+0

VS2010에는 C++ 11에 대한 일부 지원이 있습니다 (chrono가 지원됩니다). VS2012는 C++ 11을 완벽하게 지원합니다. –

답변

1

difftime 반환 http://www.cplusplus.com/reference/clibrary/ctime/difftime/ double 형 의 차이는 - 자세한 설명

당신은 (당신이 C++ (11)를 사용할 수없는 경우) 더 높은 해상도의 타이머를 사용할 필요가
+0

감사합니다. 그렇다면 어떻게 ofstream 파일에 2 자리 부동 소수점 정밀도를 표시 하시겠습니까? – octoback

+1

difftime은 time_t 유형의 두 값의 차이 (정수 값)를 계산하므로 1 초보다 높은 정밀도를 얻을 수 없습니다. difftime은 double 형식의 값을 반환하므로 다음과 같은 구문을 사용하여 2 디지털 포인트 퍼 시드 (percision) 형식으로 파일에 값을 넣을 수 있습니다. fprintf (pFile, "% .2lf", dif); 또는 객체 지향 I/O를 사용 : cout.precision (2); cout << dif << endl; –

2

이를 참조하십시오. - Like this. 귀하의 케이스에 대해 clockid_t - CLOCK_MONOTONIC.