在編寫C語言程序后,經(jīng)常需要對源碼進行優(yōu)化,以提高程序的運行效率,下面簡述幾個常用的優(yōu)化技巧以供大家參考: 1.C于代碼在程序中的優(yōu)化 現(xiàn)在的C編譯器會自動對代碼進行優(yōu)化,但這些優(yōu)化是對執(zhí)行速度和代碼長度的平衡。如果要獲得更小且執(zhí)行效率更高的代碼,需要程序員手工對代碼進行優(yōu)化。 2.變量類型的定義 不同的數(shù)據(jù)類型所生成的機器代碼長度相差很多,變量類型選取的范圍越小運行速度越快,占用的內(nèi)存越少。能夠使用char(字符型)定義的變量,就不要使用整型(int)變量定義;能夠使用整型變量定義的變量就不要用長整型(long int),能不使用浮點(float)變量就不要使用浮點型(double)變量。 相同類型的數(shù)據(jù)類型,有無符號對機器代碼長度也有影響。因此我們應(yīng)按照實際需要合理的選用數(shù)據(jù)類型。當然,在定義變量后不要超過變量的作用范圍,如果超過變量的范圍賦值,C編譯器并不報錯,但程序運行結(jié)果卻錯了,而且這樣的錯誤很難發(fā)現(xiàn)。 3.提高循環(huán)語言的效率 在 C 語言中循環(huán)語句使用頻繁,提高循環(huán)體效率的基本辦法就是降低循環(huán)體的復(fù)雜性。在多重循環(huán)中,應(yīng)將最長的循環(huán)放在最內(nèi)層,最短的循環(huán)放在最外層。這樣可以減少 CPU跨切循環(huán)的次數(shù)。如例 1-1 的效率比 1-2 的效率要高: int i,j; for (i = 0; i < 10; i++) { for (j = 0; j < 20; j++) { ... ... } } // 例子 1-1 for (j = 0; j < 20; j++) { for (i = 0; i < 10; i++) { ... ... } } // 例子 1-2 4.采用數(shù)學(xué)方法優(yōu)化程序 數(shù)學(xué)是計算機之母,沒有數(shù)學(xué)的依據(jù)和基礎(chǔ),就沒有計算機的發(fā)展,所以在編寫程序的時候,采用一些數(shù)學(xué)算法會對程序的執(zhí)行效率有數(shù)量級的提高。有時候這個問題常常被大家忽略, 對于沒有經(jīng)驗的程序員來說更是如此。例如:求 1到100的自然數(shù)和sum = 100*(100+1)/2; 數(shù)學(xué)公式. (n + 1)*n/2。 優(yōu)化算法和數(shù)據(jù)結(jié)構(gòu)對提高代碼的效率有很大的幫助。當然有時候時間效率和空間效率是對立的,此時應(yīng)分析哪個更重要,做出適當?shù)恼壑小A硗?font face="Tahoma">,在進行優(yōu)化的時候不要片面的追求緊湊的代碼,因為緊湊的代碼并不能產(chǎn)生高效率的機器碼。 |
51黃金周來了!且學(xué)且珍惜-免費學(xué)習C語言-就能進行嵌入式產(chǎn)品開發(fā),信盈達嵌入式實訓(xùn)學(xué)院推出 一、嵌入式Linux驅(qū)動開發(fā)班--底層驅(qū)動,內(nèi)核開發(fā)到應(yīng)用一網(wǎng)打盡 二、嵌入式ARM9、11+Linux實戰(zhàn)班 三、嵌入式cortex-m3+ucos開發(fā)培訓(xùn)班 四、FPGA應(yīng)用開發(fā)班、DSP實訓(xùn) 五、android驅(qū)動開發(fā)班 六、單片機綜合開發(fā)班 stm32、電子基礎(chǔ)(數(shù)電模電) PCB畫板等參與優(yōu)惠活動 想要成功,從技術(shù)開始!要想高薪,從今天開始,只要有興趣你就來! 深圳、廣州、鄭州三大實訓(xùn)基地自由轉(zhuǎn),免費參加試聽課程、技術(shù)交流活動 咨詢楊老師:13724236349 QQ:1075349026 |