> 백엔드 개발 > C++ > 다양한 플랫폼에서 CPU 시간과 벽시계 시간을 측정하는 방법은 무엇입니까?

다양한 플랫폼에서 CPU 시간과 벽시계 시간을 측정하는 방법은 무엇입니까?

Linda Hamilton
풀어 주다: 2024-11-10 04:15:02
원래의
1004명이 탐색했습니다.

How to Measure CPU Time and Wall Clock Time Across Different Platforms?

여러 플랫폼에서 CPU 시간 및 벽시계 시간 측정

코드 실행 시간을 결정하는 것은 성능 최적화에 중요합니다. 함수가 CPU 처리에 할당하는 시간과 함수 시작부터 경과된 총 시간을 식별하면 런타임 분석에 대한 귀중한 통찰력을 얻을 수 있습니다. 이러한 요구 사항을 해결하기 위해 아키텍처 종속성에 대한 고려 사항을 포함하여 Linux 및 Windows 플랫폼 모두에 대한 시간 측정 방법을 살펴보겠습니다.

C 및 C 함수:

다음은 코드 조각입니다. 이는 크로스 플랫폼 솔루션을 제공합니다:

#include <cstdio>
#include <ctime>

double get_wall_time() {
  struct timeval time;
  gettimeofday(&time, NULL);
  return (double)time.tv_sec + (double)time.tv_usec * .000001;
}

double get_cpu_time() {
  return (double)clock() / CLOCKS_PER_SEC;
}
로그인 후 복사

Windows 시스템의 경우 해당 기능은 be:

#include <Windows.h>

double get_wall_time() {
  LARGE_INTEGER time, freq;
  QueryPerformanceFrequency(&freq);
  QueryPerformanceCounter(&time);
  return (double)time.QuadPart / freq.QuadPart;
}

double get_cpu_time() {
  FILETIME a, b, c, d;
  GetProcessTimes(GetCurrentProcess(), &a, &b, &c, &d);
  return (double)(d.dwLowDateTime |
                 ((unsigned long long)d.dwHighDateTime << 32)) *
         0.0000001;
}
로그인 후 복사

데모:

이러한 함수의 사용법을 설명하기 위해 다음 예를 참조하세요.

#include <math.h>

int main() {
  double wall0 = get_wall_time();
  double cpu0 = get_cpu_time();

  // Perform some computation (e.g., a computationally intensive loop)

  double wall1 = get_wall_time();
  double cpu1 = get_cpu_time();

  printf("Wall Time: %.6f seconds\n", wall1 - wall0);
  printf("CPU Time: %.6f seconds\n", cpu1 - cpu0);

  return 0;
}
로그인 후 복사

이 코드는 계산 집약적인 루프에서 소비한 벽시계 시간과 CPU 시간을 계산하고 다음에 대한 결과를 인쇄합니다.

아키텍처 독립성:

제시된 시간 측정 방법은 대체로 아키텍처에 독립적입니다. 이는 특정 하드웨어 아키텍처를 설명하도록 설계된 시스템 제공 기능에 의존합니다. 그러나 특정 극단적인 경우에는 플랫폼별 최적화 또는 고려 사항이 필요할 수 있습니다.

위 내용은 다양한 플랫폼에서 CPU 시간과 벽시계 시간을 측정하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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