> 백엔드 개발 > C++ > 'time()'이 때때로 짧은 작업 전후에 동일한 값을 반환하는 이유는 무엇입니까?

'time()'이 때때로 짧은 작업 전후에 동일한 값을 반환하는 이유는 무엇입니까?

Susan Sarandon
풀어 주다: 2025-01-03 15:07:40
원래의
289명이 탐색했습니다.

Why Does `time()` Sometimes Return the Same Value Before and After a Short Task?

간단한 경과 시간 측정

질문:

프로그램에서 경과 시간을 측정할 때 time(), 왜 이전 및 이후 값이 그대로 유지될 수 있습니까? 동일합니까?

설명:

time()은 Epoch 이후의 현재 시간을 초 단위로 반환합니다. 측정할 시간이 짧을 경우 전후 값의 차이가 너무 작아 감지할 수 없을 수 있습니다.

해결책:

짧게 정확하게 측정하려면 시간 범위가 있는 경우 대체 방법 사용을 고려하십시오.

C 구조화된 시간 측정:

struct timeval startTV, endTV;
gettimeofday(&startTV, NULL); 
// Execute time-consuming tasks
gettimeofday(&endTV, NULL); 

timersub(&endTV, &startTV, &diff);
printf("**time taken = %ld %ld\n", diff.tv_sec, diff.tv_usec);
로그인 후 복사
  • timeval 구조는 최대 마이크로초까지의 정밀도로 시간 값을 나타냅니다.
  • gettimeofday()는 현재 시간을 가져옵니다.
  • timersub()는 두 timeval 구조 간의 차이를 계산합니다.
  • 결과는 초 단위로 보고됩니다. (diff.tv_sec) 및 마이크로초(diff.tv_usec).

C 11 스타일 정밀 시간 측정:

#include <chrono>

std::chrono::steady_clock::time_point begin = std::chrono::steady_clock::now();
// Execute time-consuming tasks
std::chrono::steady_clock::time_point end = std::chrono::steady_clock::now();

std::cout << "Time difference = " << std::chrono::duration_cast<std::chrono::microseconds>(end - begin).count() << "[µs]" << std::endl;
std::cout << "Time difference = " << std::chrono::duration_cast<std::chrono::nanoseconds>(end - begin).count() << "[ns]" << std::endl;
로그인 후 복사
  • std:: 크로노 라이브러리는 고정밀 시간을 제공합니다. 측정.
  • std::chrono::steady_clock은 알 수 없는 임의의 시점 이후의 시간을 측정합니다.
  • 시간 차이는 std::chrono::duration 객체로 계산됩니다. 마이크로초 또는 나노초로 변환됩니다.

위 내용은 'time()'이 때때로 짧은 작업 전후에 동일한 값을 반환하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿