Wie kann ich Messen, CPU-Zeit und die wall-clock-Zeit auf Linux/Windows?
Ich meine: wie kann ich Messen die Zeit, die meine CPU ausgegeben Ausführung der Funktion und wall-clock Zeit, die es braucht, um laufen meine Funktion? (Interessiert mich, Linux/Windows und x86 und x86_64). Sehen, was ich tun will (Im mit C++ hier, aber ich würde lieber C-Lösung):
int startcputime, endcputime, wcts, wcte;
startcputime = cputime();
function(args);
endcputime = cputime();
std::cout << "it took " << endcputime - startcputime << " s of CPU to execute this\n";
wcts = wallclocktime();
function(args);
wcte = wallclocktime();
std::cout << "it took " << wcte - wcts << " s of real time to execute this\n";
Eine weitere wichtige Frage: ist diese Art der Zeitmessung von der Architektur unabhängige oder nicht?
InformationsquelleAutor der Frage yak | 2013-07-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist ein copy-paste-Lösung, die funktioniert auf Windows-und Linux-sowie C und C++.
Wie bereits erwähnt in den Kommentaren, es gibt einen boost-library, die das macht. Aber wenn Sie nicht verwenden können, zu steigern, sollte dies funktionieren:
Gibt es eine Reihe von Möglichkeiten zu implementieren, die diese Uhren. Aber hier ist, was das obige snippet verwendet:
Für Windows:
GetProcessTimes()
Für Linux:
gettimeofday()
Uhr()
Und hier ist eine kleine demonstration:
Ausgang (12 threads):
InformationsquelleAutor der Antwort Mysticial
C++11. Viel leichter zu schreiben!
Verwenden
std::chrono::system_clock
für Wand-Uhr undstd::clock
für cpu clockhttp://en.cppreference.com/w/cpp/chrono/system_clock
Et voilà, leicht und tragbar! Keine Notwendigkeit für die #ifdef _WIN32 oder LINUX!
Könnten Sie sogar mit
chrono::high_resolution_clock
wenn Sie mehr Präzisionhttp://en.cppreference.com/w/cpp/chrono/high_resolution_clock
InformationsquelleAutor der Antwort carlduke
Geben ein konkretes Beispiel von @lip ' s Vorschlag verwenden
boost::timer
wenn Sie können (getestet mit Boost-1.51):InformationsquelleAutor der Antwort Andre Holzner
Verwenden Sie die
clock
Methode in Zeit.h:Leider, diese Methode gibt die CPU-Zeit auf Linux, aber Renditen der wall-clock-time auf Windows (Dank Kommentatoren für diese Informationen).
InformationsquelleAutor der Antwort syb0rg