여러 플랫폼에서 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!