|
1)選擇合適的算法和數(shù)據(jù)結(jié)構(gòu) 應(yīng)熟悉算法語(yǔ)言。將比較慢的順序查找法用較快的二分查找法或亂序查找法代替,插入排序或冒泡排序法用快速排序、合并排序或根排序代替,這樣可以大大提高程序執(zhí)行的效率。 選擇一種合適的數(shù)據(jù)結(jié)構(gòu)也很重要。數(shù)組與指針具有十分密切的關(guān)系,一般來(lái)說(shuō)指針比較靈活簡(jiǎn)潔,而數(shù)組則比較直觀(guān),容易理解。對(duì)于大部分分的編譯器,使用指針比使用數(shù)組生成的代碼更短,執(zhí)行效率更高。但是在Keil 中則相反,使用數(shù)組比使用的指針生成的代碼更短。 2)使用盡量小的數(shù)據(jù)類(lèi)型 能夠使用字符型(char)定義的變量,就不要使用整型(int)變量來(lái)定義;能夠使用整型變量定義的變量就不要用長(zhǎng)整型(long int),能不使用浮點(diǎn)型(float)變量就不要使用浮點(diǎn)型變量。當(dāng)然,在定義變量后不要超過(guò)變量的作用范圍,如果超過(guò)變量的范圍賦值,C 編譯器并不報(bào)錯(cuò),但程序運(yùn)行結(jié)果卻錯(cuò)了,而且這樣的錯(cuò)誤很難發(fā)現(xiàn)。 3)使用自加、自減指令 通常使用自加、自減指令和復(fù)合賦值表達(dá)式(如a-=1 及a+=1 等)都能夠生成高質(zhì)量的程序代碼,編譯器通常都能夠生成inc 和dec 之類(lèi)的指令,而使用a=a+1 或a=a-1之類(lèi)的指令,有很多C 編譯器都會(huì)生成2~3個(gè)字節(jié)的指令。 4)減少運(yùn)算的強(qiáng)度 可以使用運(yùn)算量小但功能相同的表達(dá)式替換原來(lái)復(fù)雜的的表達(dá)式。 |
|