Heim > Backend-Entwicklung > C++ > Hauptteil

Wie misst man CPU-Zeit und Wanduhrzeit auf verschiedenen Plattformen?

Linda Hamilton
Freigeben: 2024-11-10 04:15:02
Original
937 Leute haben es durchsucht

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

CPU-Zeit und Wall-Clock-Zeit auf mehreren Plattformen messen

Die Bestimmung der Ausführungszeit von Code ist für die Leistungsoptimierung von entscheidender Bedeutung. Die Ermittlung, wie viel Zeit eine Funktion der CPU-Verarbeitung im Vergleich zur Gesamtzeit seit ihrer Initiierung zuweist, liefert wertvolle Erkenntnisse für die Laufzeitanalyse. Um diesem Bedarf gerecht zu werden, untersuchen wir Zeitmessmethoden für Linux- und Windows-Plattformen, einschließlich Überlegungen zur Architekturabhängigkeit.

C- und C-Funktionen:

Hier ist ein Codeausschnitt das eine plattformübergreifende Lösung bietet:

#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;
}
Nach dem Login kopieren

Für Windows-Systeme würden die entsprechenden Funktionen gelten sein:

#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;
}
Nach dem Login kopieren

Demonstration:

Um die Verwendung dieser Funktionen zu veranschaulichen, hier ein Beispiel:

#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;
}
Nach dem Login kopieren

Dieser Code berechnet die ermittelt die von der rechenintensiven Schleife verbrauchte Uhrzeit und CPU-Zeit und gibt die Ergebnisse für aus Analyse.

Architekturunabhängigkeit:

Die vorgestellten Zeitmessmethoden sind weitgehend architekturunabhängig. Sie stützen sich auf vom System bereitgestellte Funktionen, die so konzipiert sind, dass sie der spezifischen Hardwarearchitektur Rechnung tragen. Bestimmte Grenzfälle erfordern jedoch möglicherweise plattformspezifische Optimierungen oder Überlegungen.

Das obige ist der detaillierte Inhalt vonWie misst man CPU-Zeit und Wanduhrzeit auf verschiedenen Plattformen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage