2013-04-10 70 views
1

對於C代碼特定的程序,我想衡量:測量Ç執行時間,內存佔用和CPU負載爲一個程序

execution time (most likely complete program execution time) 
memory usage 
CPU load 

我怎樣才能得到所有上述信息用C?

+1

哪個平臺? – guitarflow 2013-04-10 14:35:13

+0

答案可能會因環境而異。例如,您可能會添加一個表示感興趣的操作系統的標籤(例如,windows,linux,osx等) – 2013-04-10 14:35:38

+0

如果是基於UNIX系統的命令行工具,則可以使用'time'來執行時間測量。在C中,我個人使用gettimeofday()在代碼塊之前和之後。 – guitarflow 2013-04-10 14:37:12

回答

0

可以編寫一個簡單的代碼使用標準C庫時間/日期操作(time.h中)來測量一個特定的代碼塊的執行時間:http://en.wikipedia.org/wiki/C_date_and_time_functions

內存使用實際上是不可能精確地測量用於一個非平凡的程序。你的程序是否使用共享庫?那麼,您是否將共享庫使用的內存計算爲專屬於您的程序?怎麼樣你的程序fork()編輯的子進程?你是將它們分開還是與主流程一起計數?所有這些問題都可以回答,但這意味着您所衡量的內容取決於您的具體選擇。

在C中,你可以做的是圍繞malloc()和free()使用你的包裝來跟蹤你的內存分配。

對於CPU負載,您需要與OS進行接口。您無法從C.中獲得該信息。

相關問題