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