天天看點

代碼優化

好久沒寫文章,近期忙房屋裝修,難得閑下來寫寫blog,想起之前搞得非常狼狽的3個性能問題,都是非經常見的,記下來引以為戒:

1. 在寫系統的i2c driver的時候,從參考闆拿來一份輪詢的driver sample,改完之後就直接送出代碼到系統庫,主要的測試都沒有問題,一直到系統級别測試,發現和其它系統的交流的某個task A偶爾會timeout,一直找了非常久以為是網絡有問題,最後無意觀看使用Vxworks自帶的spy monitor log裡面發現當task A timeout的時候,i2c driver task占用CPU百分比非常高,而i2c driver task僅僅是簡單的讀取操作,并且讀取次數也不多,細緻檢視輪詢代碼, driver裡面在等待i2c傳回的時候使用了sysUsDelay,看了UsDelay的實作就是i++.....難怪CPU占用非常高,改成中斷模式之後問題解決。