在日常編程中,可能實現的功能都是一樣的,但是別人就是要寫的快,寫的好,而且同樣代碼執行效率還高。究其原因,就是別人編寫的代碼多,掌握了更多的技巧性的東西,從而無論從編碼效率還是代碼的執行效率上都更優。現將日常編程中使用到的一些常規技巧進行簡單總結。 1、從循環開始 1)while(--n>=0)與while(n-->0) 在大多數C語言實現中,--n >=0 至少與等效的n-- >0 一樣快,大多數情況下前者更快。 主要因為第一個表達式首先從n中減去1然后將結果與0比較;而第二個表達式首先保存n,從n中減去1之后比較保存值與0的大小,這中間多了一個保存的時間,從而前一個表達式更快。 注意:這樣的循環中,盡量不使用unsigned類型,否則前者會出現無限循環情況。 2)多重循環處理 對于多重循環,如果可能,應將最長的循環放在最內層,最短的循環放在最外層,以減少CPU跨切循環層的次數。 3)for循環 對于for語句的循環控制變量的取值采用“半開半閉區間”寫法,用此方法更加直觀。 不能在for循環體內修改循環變量,防止循環失控。 循環要盡可能的短,使代碼顯得清晰。若太長,看是否真的必須放入循環中,若必須,可以將這些代碼封裝成一個子函數,循環中只需調用子函數即可。 同時,把循環嵌套控制在3層以內。 2、函數參數 在設計函數時,通常將 如果參數是指針,且僅作輸入用,則應在類型前加const,以防止該指針在函數體內被意外修改。 3、函數中內存處理 1)在函數中分配的內存,在函數退出之前要釋放 2)return語句不可返回指向“棧內存”的指針或者引用,因為該內存在函數體結束時被自動銷毀。 4、時間效率提升 1)調用if語句時,優先處理正常情況,再處理異常情況。 首先,可以使得正常情況的執行代碼清晰,那些不常發生的異常情況不會遮掩了正常的執行路徑。 其次,由于每進行一次if語句必然會有比較過程存在,而正常情況應該是發生的比較多的情況,那么可以減少在使用過程中比較的調用。設計時一定不要顛倒主次。 2)使用switch,case時,也要注意case的順序,尤其是比較多種類的情況下,發生概率高的放在前面,低的放在后面,可以有效的減少不必要的比較過程。若沒有重要性區分,按照字母排列順序或數字大小排列也可。 更多嵌入式咨詢可加交流群277686564 QQ2905283896 電話13722663815 |
10671746.gif (36.64 KB)
QQ圖片20160423113845.jpg (47.99 KB)
u=2429609584,2450763625&fm=21&gp=0.jpg (4.55 KB)