有沒有什麼辦法可以通過編程獲得C程序運行的總時間以及在特定函數中花費的時間量?我需要在代碼中這樣做,因爲我想將這兩個值用作另一個函數的參數。由於我在Linux上,我能夠使用gprof或perf來做到這一點嗎?以編程方式獲得Linux上函數的總時間和忙時間
2
A
回答
2
獲取程序啓動時的系統時間。然後,只要你願意,你可以得到當前時間,並減去開始時間。這告訴你在掛鐘時間裏跑了多久。
有一個全局布爾值Q,當你的函數進入時設置爲True,當它退出時設置爲False,所以只有當程序在函數「包含」時才爲真。
設置一個定時器中斷,每隔N ms關閉一次,並且有兩個全局計數器A和B.(N不一定要小)。當定時器中斷時,無論增加B,只增加如果Q是真的。
這樣,你知道已經過了多少時間,而A/B是你的函數在堆棧上的那一小部分時間。
順便說一句:如果函數是遞歸的,讓Q是一個整數「深度計數器」。否則,沒有改變。
+0
另外,每次調用函數時,我都不能在函數內部啓動一個新的定時器,並且函數返回時,將該流逝的時間添加到計數器(如您的示例中的B)? –
+2
@John:那可能會起作用,但調用get-time例程可能比您的函數中發生的代價要貴。中斷方法的優點是採樣率可以儘可能低。它不一定是高頻率。 –
1
1
相關問題
- 1. 獲得總編譯時間
- 2. 如何獲得mysql的時間總和?
- 3. 以編程方式添加時間戳
- 4. 如何獲得總時間?
- 5. 以編程方式將DatePicker時間設置爲當前時間
- 6. 想要獲得時間總和
- 7. 時間表()函數的Linux
- 8. 編程方式獲得視頻持續時間
- 9. Azure Web作業 - 以編程方式獲取上次運行時間和狀態
- 10. 如何以編程方式獲取爲ListItem創建的時間
- 11. 以編程方式獲取網絡運營商的時間(android)
- 12. Avconv獲得編碼過程的總持續時間
- 13. 以C語言編程獲取線程的CPU時間的方法,可以在OpenSolaris和Linux上使用
- 14. android - 以編程方式獲得AMR音頻文件的持續時間
- 15. Android上SQLite的忙時間超時
- 16. 如何以編程方式在MySql中捕獲時間戳?
- 17. 如何以編程方式捕獲視頻持續時間?
- 18. R彙總函數和時間
- 19. Android:以特定時間間隔以編程方式打開和關閉屏幕
- 20. 如何以編程方式確定時間間隔狀態
- 21. 通過NTP以編程方式在Windows上同步時間
- 22. 以編程方式如何在android中獲得實際時間如果我更改了設備時間
- 23. 每週總時間和月總時數
- 24. iOS - 如何以編程方式設置日期和時間
- 25. 以編程方式設置時間時,UIDatePicker顯示爲禁用
- 26. 獲取夜間兩個時間之間的時間以早上
- 27. Linux的可編程間隔計時器
- 28. php mysql,如何獲得總時間?
- 29. 獲得總從某個時間戳
- 30. Linux ps命令 - 獲取進程運行時間 - etime和時間參數不同
您是否做過任何調查?有「時間」和「時鐘」功能等等。 –
另請參閱http://www.pixelbeat.org/programming/profiling/ –