C ++ Mikrosekunden

C ++ Mikrosekunden
Um eine genaue Ausführungszeit in einem C ++ - Programm zu erhalten, bietet die C ++ - Programmiersprache mehrere Optionen. Sie können Ihren benutzerdefinierten Code schreiben, um die genaue Ausführungszeit zu erhalten, oder Sie können die integrierte Funktion verwenden, um Ihre Zeit und Energie zu speichern. Die integrierte Funktion der C ++-Programmiersprache hilft dem Entwickler, komplexe Prozesse mit nur einer einzelnen Funktion zu implementieren. In diesem Artikel werden wir lernen, die genaue und präzise Ausführungszeit in Mikrosekunden mit den integrierten C ++-integrierten Funktionen zu erhalten. Es gibt verschiedene Möglichkeiten, die Ausführungszeit in Mikrosekunden zu finden.

Berechnung der Ausführungszeit des C ++ - Programms in Mikrosekunden

Leider gibt es keine Methoden, um die genaue Ausführungszeit zu ermitteln, die für alle funktioniert. Dafür müssen Sie die Lösung entsprechend der Situation auswählen. Die Messung der genauen Ausführungszeit eines C ++ - Programms kann in einigen Situationen aufgrund von Tragbarkeitsproblemen schwierig sein. Die Auswahl der richtigen Methoden, die zu Ihrem Betriebssystem und der Compiler -Version passen, ist wichtig, um eine genaue Zeit zu erhalten. Noch wichtiger ist, dass Sie verstehen müssen, was Sie mit der "Zeit" genau verstehen, damit Sie die Methode entsprechend auswählen können.

Hier finden Sie eine umfassende Liste einiger einfacher, einfacher und besten Optionen, um die Ausführungszeit eines C ++ - Programms zu finden. Wir werden auch die Einschränkungen der Funktionen auflisten, um Ihnen einen Heads-up zu geben, bevor Sie diese Funktion in Ihrem Programm verwenden.

Hoffentlich erhalten Sie die beste Option, die sich perfekt für Ihr Betriebssystem und die Compiler -Version eignet.

Beispiel 1:

Wir werden die Wandzeit mit der Funktion untersuchen. Die Funktion ist eine der tragbarsten Möglichkeiten, um die Wandzeit in einem C ++ - Programm zu finden. Es funktioniert nur mit C ++ 11 und späteren Versionen. Wenn Sie eine ältere Version haben, aktualisieren Sie Ihren Compiler, bevor Sie diese Funktion verwenden. Es hat Zugriff auf verschiedene Arten von Uhren in der Maschine mit unterschiedlichen Eigenschaften und Zwecken.

Hier verwenden wir die High_Resolution_clock, um die Wandzeit zu finden, da die höchste verfügbare Uhr zur Verfügung steht, die für die meisten Systeme wahrscheinlich ausreicht. Siehe den unten angegebenen Code:

#enthalten
#enthalten
int main ()
double s = 0, a = 1;
auto start = std :: chrono :: High_Resolution_clock :: Now ();
int it = 1000*1000*1000;
für (int i = 0; is += a;
a /= 2.0;

auto end = std :: chrono :: High_Resolution_clock :: Now ();
auto verkleinert = std :: chrono :: duration_cast (Ende - Start);
printf ("Die Uhr beginnt bei = %.2f \ n ", s);
printf ("gemessene Zeit ist = %.3f Sekunden.\ n ", verstrichen.count () * 1e-6);
Rückkehr 0;

Das Programm beginnt mit zwei Header -Dateien stdio.H und Chrono. Der Stdio.H Bibliothek wird in Verbindung mit den Standardeingangs- und Ausgangsmethoden verwendet. Mit der Chrono -Bibliothek können Sie die Funktion in Ihrem Programm verwenden. Das gesamte Programm ist in der Hauptfunktion geschrieben, in der die gesamte Ausführung stattfindet.

Das Hauptprogramm beginnt mit der Initialisierung von zwei Variablen und "A", mit der die Zeit im Auge behalten wird. Die Variable "Start" wird mit der aktuellen Zeit mit 'Chrono :: High_reolution_clock :: Now ()' initialisiert.

Die Variable 'it = 1000*1000*1000' wird mit der Anzahl der Iterationen initialisiert, die durchgeführt werden müssen, und berechnet die verstrichene Zeit in Mikrosekunden. Die folgende Aktion wird von der „für“ -Schloop durchgeführt, da sie von 0 bis 1000*1000*1000 -mal iteriert.

Eine andere Variable "Ende" wird mit der aktuellen Zeit initialisiert, um die verstrichene Zeit zu überprüfen. Wenn Sie "Ende - Start" berechnen, erhalten Sie die verstrichene Ausführungszeit. Die 'Chrono :: Mikrosekunden' liefert die Ausführungszeit in Mikrosekunden, die mit verstrichenen Sekunden in Sekunden umgewandelt werden.count ()*1e-6 'Berechnung. In den Aussagen printf () drucken die Startzeit und verstrichene Zeit. Und schließlich stellt die Return 0 -Erklärung sicher, dass das Programm erfolgreich ausgeführt wird.

Wenn Sie den vollständigen Code ausführen, wird je nach Ausführungsgeschwindigkeit und Effizienz Ihres Systems eine ähnliche Ausgabe erzeugt:

Beispiel 2:

In dem unten angegebenen Code verwenden wir die Funktion GetTimeofday (), um die verstrichene Zeit seit der Epoche "1. Januar 1970, 00:00:00 UTC" zu finden. Die Funktion GetTimeOfday () gibt die Zeit sowohl in Mikrosekunden als auch in Sekunden zurück. Um die genaue Zeit in Mikrosekunden zu finden, müssen beide Male zusammen summiert werden. Nachfolgend beigefügten Code hilft Ihnen, die Ausführungszeit in Mikrosekunden zu berechnen

#enthalten
#enthalten
int main ()
double s = 0, a = 1;
struct timeval start, enden;
GetTimeofday (& Start, 0);
int it = 1000*1000*1000;
für (int i = 0; is += a;
a /= 2.0;

GetTimeofday (& Ende, 0);
lange sec = Ende.TV_SEC - Start.TV_SEC;
langes micro = Ende.TV_USEC - START.TV_USEC;
doppelt verstrichen = Sek. + Micro*1E-6;
printf ("Die Uhr beginnt bei = %.20f \ n ", s);
printf ("gemessene Zeit ist = %.3f Sekunden.\ n ", verstrichen);
Rückkehr 0;

Die Funktion GetTimeofday () ist in der Header -Datei enthalten.

Das 'Struct Timeval' ist eine Zeitval -Struktur, die zur Darstellung der verstrichenen Zeit verwendet wird.

Die berechnete Zeit in Sekunden und Mikrosekunden werden hinzugefügt, um die genaue Ausführungszeit in Mikrosekunden zu erhalten. Die Funktion 'tv_sec' bietet die Zeit in Sekunden und 'tv_usec' die Zeit in Mikrosekunden. Um die Sekunden in Mikrosekunden umzuwandeln, multiplizieren Sie die Mikrosekunden mit 1E-6. Fügen Sie danach beide Male in Sekunden und Mikrosekunden hinzu, um die genaue Ausführungszeit in Mikrosekunden zu erhalten.

Klicken Sie nun auf das Symbol Kompilieren und Ausführen in der Symbolleiste der Dev C ++ -Software. Drücken Sie die F11 -Taste auf der Tastatur, um das Programm auszuführen. Die ausgeführte Ausgabe ist unten angegeben:

Beispiel 3:

In diesem Beispiel verwenden wir die Bibliothek und ihre Time () -Funktion. Die Funktion Time () funktioniert ähnlich wie bei der Funktion GetTimeOfday (), die die verstrichene Zeit seit der Epoche -Zeit bereitstellt. Es misst jedoch nur die volle Sekunden und Sie können die Zeitzone nicht definieren. Wenn die gemessenen Intervalle mehr als eine Sekunde sind, ist Time () -Funktion sinnvoll. Dies ist möglicherweise nicht die erste Präferenz, um die Mikrosekunden zu erhalten, und Sie können stattdessen andere Funktionen verwenden. Siehe den Code unten:

#enthalten
#enthalten
int main ()
double s = 0, a = 1;
Time_t Start, Ende;
Mal starten);
int it = 1000*1000*1000;
für (int i = 0; is += a;
a /= 2.0;

Zeit (& Ende);
TIME_T DURPSED = END - START;
printf ("Ergebnis: %.20f \ n ", s);
printf ("Zeit gemessen: %LD Sekunden.\ n ", verstrichen);
Rückkehr 0;

Die Funktion Time () liefert die Ausführung der Start- und Endzeit und die verstrichene Zeit kann leicht mit einer Anweisung "Ende - Start" berechnet werden. Siehe das Ergebnis unten:

Es ist zu beachten.833 Mikrosekunden. Der Unterschied im Ergebnis der Funktion Time () ist im Ausgang zu sehen.

Abschluss

Verschiedene Methoden berechnen die Ausführungszeit des Systems mit einem C ++ - Programm. Für jede Situation ist jedoch keine Lösung perfekt und jede Funktion funktioniert in verschiedenen Situationen unterschiedlich. Hier haben wir gelernt, die Zeit (), GetTimeofday () und Funktionen zu nutzen, um die Ausführungszeit in Mikrosekunden zu erhalten.