Lebih
Bagaimana saya bisa mengukur waktu CPU dan jam dinding waktu di kedua Linux/Windows?
Maksud saya: bagaimana saya bisa mengukur waktu CPU saya dihabiskan untuk fungsi eksekusi dan jam dinding waktu yang dibutuhkan untuk menjalankan fungsi saya? (Im tertarik pada Linux/Windows dan kedua x86 dan x86_64). Melihat apa yang ingin saya lakukan (Im menggunakan C++ di sini tapi aku lebih suka C larutan):
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";
Pertanyaan lain yang penting: ini adalah jenis dari waktu pengukuran arsitektur independen atau tidak?
46
4
Berikut ini's copy-paste solusi yang bekerja pada Windows dan Linux serta C dan C++.
Seperti yang disebutkan di komentar, ada's dorongan perpustakaan yang melakukan hal ini. Tapi jika anda dapat't menggunakan boost, ini harus bekerja:
C++11. Jauh lebih mudah untuk menulis!
Gunakan
std::chrono::system_clock
untuk jam dinding danstd::jam
untuk cpu clock http://en.cppreference.com/w/cpp/chrono/system_clockUntuk memberikan contoh konkret dari @lip's saran untuk menggunakan
boost::timer
jika anda bisa (diuji dengan Meningkatkan 1.51):Menggunakan
jam
metode dalam waktu.h:Sayangnya, metode ini kembali waktu CPU pada Linux, tapi kembali dinding-waktu jam pada Windows (terima kasih untuk komentator untuk informasi ini).