如何測量程序運行時間?
整理:黃工
素材來源:最后一個Bug
程序的運行時間,對一個系統(tǒng)比較重要。有的地方要求精確延時Nus,有的地方要求程序運行時間不能超過Nus。
所以,今天給大家分享一些常見測量程序(任務)運行時間的方法。
比如說我們真實世界與數(shù)字世界的窗口-AD采樣芯片,我們都需要通過感知外界的一些反饋來對我們的系統(tǒng)做出正確的決策,那么AD芯片的轉(zhuǎn)化速度就成了決定該反饋的速度,進而影響著我們的系統(tǒng)。
再比如,我們要運行一段算法,我們都期待越快越好,但這段算法會牽涉?zhèn)鞲衅鞯牟杉幚?。那么這其中要綜合考慮傳感器采集的最大速率等問題。
所以,我們在項目研發(fā)初期就要考慮一些地方程序運行的時間問題。下面為大家總結(jié)日常的測量方法,供大家學習參考。
TEST_IO_LOW();
//被測量代碼start
//······
//被測量代碼end
TEST_IO_HIGH();
3、內(nèi)部定時器法
該方法與上面的捕獲IO方法是類似的,在嵌入式系統(tǒng)中經(jīng)常會遇到時間戳的使用,同時還能獲得CPU的利用率,其實方法都是一樣的,系統(tǒng)中會開啟一個核心定時器,該定時器一般不會受到外部的干擾等,通過該定時器在任務的開頭和結(jié)尾分別安插標志,從而獲得這段時間內(nèi)的定時器計數(shù),從而計算出程序運行時間。
該方法在我們的小型或者資源不足的芯片上使用得不多,因為我們很少有多余的定時器來進行額外的處理,同時由于定時器處理需要一定的時間,以及一些額外的計算等都會導致測量時間上的誤差,如果該誤差在能夠接受的范圍還是可以采用該方法的。
4.仿真器法
目前許多芯片的調(diào)試仿真器都會具備測量仿真程序的多方面性能的功能,比如說KEIL或者CCS集成開發(fā)環(huán)境也都基本支持測量程序運行時間的,一般都是測量斷點之間的程序所運行時間,用戶需要在開發(fā)環(huán)境中進行芯片當前的晶振、主頻等等方面參數(shù)的設置以后基本能夠獲得一個運行時間結(jié)果。
聲明:本文來源最后一個Bug,僅代表作者觀點,不代表本公眾號對該觀點贊同或支持,版權(quán)歸原作者所有。
猜你喜歡
先漲薪后付費 | 只為結(jié)果付費的人工智能高薪培養(yǎng)計劃
翻到幾年前的代碼,我驚了。
幾款優(yōu)秀的 Windows 虛擬串口模擬器
?最 后??
?
免責聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺僅提供信息存儲服務。文章僅代表作者個人觀點,不代表本平臺立場,如有問題,請聯(lián)系我們,謝謝!