C語(yǔ)言?xún)?yōu)化小技巧

發(fā)布時(shí)間:2014-4-24 14:53    發(fā)布者:edu11814
關(guān)鍵詞: c語(yǔ)言
在編寫(xiě)C語(yǔ)言程序后,經(jīng)常需要對源碼進(jìn)行優(yōu)化,以提高程序的運行效率,下面簡(jiǎn)述幾個(gè)常用的優(yōu)化技巧以供大家參考:

1.C于代碼在程序中的優(yōu)化
  現在的C編譯器會(huì )自動(dòng)對代碼進(jìn)行優(yōu)化,但這些優(yōu)化是對執行速度和代碼長(cháng)度的平衡。如果要獲得更小且執行效率更高的代碼,需要程序員手工對代碼進(jìn)行優(yōu)化。

2.變量類(lèi)型的定義
  不同的數據類(lèi)型所生成的機器代碼長(cháng)度相差很多,變量類(lèi)型選取的范圍越小運行速度越快,占用的內存越少。能夠使用char(字符型)定義的變量,就不要使用整型(int)變量定義;能夠使用整型變量定義的變量就不要用長(cháng)整型(long int),能不使用浮點(diǎn)(float)變量就不要使用浮點(diǎn)型(double)變量。
  相同類(lèi)型的數據類(lèi)型,有無(wú)符號對機器代碼長(cháng)度也有影響。因此我們應按照實(shí)際需要合理的選用數據類(lèi)型。當然,在定義變量后不要超過(guò)變量的作用范圍,如果超過(guò)變量的范圍賦值,C編譯器并不報錯,但程序運行結果卻錯了,而且這樣的錯誤很難發(fā)現。

3.提高循環(huán)語(yǔ)言的效率
  在 C 語(yǔ)言中循環(huán)語(yǔ)句使用頻繁,提高循環(huán)體效率的基本辦法就是降低循環(huán)體的復雜性。在多重循環(huán)中,應將最長(cháng)的循環(huán)放在最內層,最短的循環(huán)放在最外層。這樣可以減少 CPU跨切循環(huán)的次數。如例 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.采用數學(xué)方法優(yōu)化程序
  數學(xué)是計算機之母,沒(méi)有數學(xué)的依據和基礎,就沒(méi)有計算機的發(fā)展,所以在編寫(xiě)程序的時(shí)候,采用一些數學(xué)算法會(huì )對程序的執行效率有數量級的提高。有時(shí)候這個(gè)問(wèn)題常常被大家忽略, 對于沒(méi)有經(jīng)驗的程序員來(lái)說(shuō)更是如此。例如:1100的自然數和sum = 100*(100+1)/2; 數學(xué)公式. (n + 1)*n/2。
  優(yōu)化算法和數據結構對提高代碼的效率有很大的幫助。當然有時(shí)候時(shí)間效率和空間效率是對立的,此時(shí)應分析哪個(gè)更重要,做出適當的折中。另外,在進(jìn)行優(yōu)化的時(shí)候不要片面的追求緊湊的代碼,因為緊湊的代碼并不能產(chǎn)生高效率的機器碼。
本文地址:http://selenalain.com/thread-128960-1-1.html     【打印本頁(yè)】

本站部分文章為轉載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀(guān)點(diǎn)和對其真實(shí)性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問(wèn)題,我們將根據著(zhù)作權人的要求,第一時(shí)間更正或刪除。
xydedu 發(fā)表于 2014-4-28 10:33:51
51黃金周來(lái)了!且學(xué)且珍惜-免費學(xué)習C語(yǔ)言-就能進(jìn)行嵌入式產(chǎn)品開(kāi)發(fā),信盈達嵌入式實(shí)訓學(xué)院推出
一、嵌入式Linux驅動(dòng)開(kāi)發(fā)班--底層驅動(dòng),內核開(kāi)發(fā)到應用一網(wǎng)打盡
二、嵌入式ARM9、11+Linux實(shí)戰班
三、嵌入式cortex-m3+ucos開(kāi)發(fā)培訓班
四、FPGA應用開(kāi)發(fā)班、DSP實(shí)訓
五、android驅動(dòng)開(kāi)發(fā)班
六、單片機綜合開(kāi)發(fā)班 stm32、電子基礎(數電模電) PCB畫(huà)板等參與優(yōu)惠活動(dòng)
想要成功,從技術(shù)開(kāi)始!要想高薪,從今天開(kāi)始,只要有興趣你就來(lái)!
深圳、廣州、鄭州三大實(shí)訓基地自由轉,免費參加試聽(tīng)課程、技術(shù)交流活動(dòng)
咨詢(xún)楊老師:13724236349   QQ:1075349026
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页