>백엔드 개발 >C++ >C와 C에서 경과 시간을 어떻게 정확하게 측정할 수 있습니까?

C와 C에서 경과 시간을 어떻게 정확하게 측정할 수 있습니까?

Patricia Arquette
Patricia Arquette원래의
2024-12-22 20:10:12746검색

How Can I Accurately Measure Elapsed Time in C and C  ?

C 및 C의 효율적인 경과 시간 측정

경과 시간을 정확하게 측정하는 것은 프로그래밍 성능 분석에 매우 중요합니다. 그러나 표준 C 함수 time()은 짧은 기간의 작업에는 신뢰할 수 없습니다.

C에서 gettimeofday() 사용

이 문제를 해결하기 위해 C 프로그래머는 다음을 수행할 수 있습니다. 마이크로초 정밀도로 현재 시간을 반환하는 gettimeofday() 함수를 사용합니다. 예는 다음과 같습니다.

#include <sys/time.h>

struct timeval startTV, endTV;

gettimeofday(&startTV, NULL); // Start time

// Perform long-running tasks

gettimeofday(&endTV, NULL); // End time

time_t diffSeconds = endTV.tv_sec - startTV.tv_sec;
long diffMicroseconds = endTV.tv_usec - startTV.tv_usec;

printf("Time taken: %ld seconds, %ld microseconds\n", diffSeconds, diffMicroseconds);

C에서 std::chrono 사용

C에서 std::chrono 라이브러리는 측정을 위한 보다 현대적이고 이식 가능한 솔루션을 제공합니다. 경과 시간. 다음 예를 고려하십시오.

#include <chrono>

using namespace std::chrono;

auto begin = steady_clock::now(); // Start time

// Perform long-running tasks

auto end = steady_clock::now(); // End time

duration<double, nano> diff = end - begin;

cout << "Time taken: " << diff.count() << " nanoseconds" << endl;

결과 이해

gettimeofday() 및 std::chrono의 출력은 초 및 마이크로초 단위의 시간 차이를 반환합니다. 나노초. 예:

  • 소요 시간: 4초, 25마이크로초(gettimeofday() 사용)
  • 소요 시간: 26,339마이크로초(std::chrono 사용)

첫 번째 예에서 경과 시간은 4.025초입니다. 두 번째 예에서는 0.026339초입니다. std::chrono는 기본적으로 나노초를 반환하므로 원하는 경우 수동으로 마이크로초 또는 초로 변환해야 할 수도 있습니다.

위 내용은 C와 C에서 경과 시간을 어떻게 정확하게 측정할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.