- 嵌入式C語(yǔ)言?xún)?yōu)化小技巧 推薦度:
- 相關(guān)推薦
C語(yǔ)言?xún)?yōu)化小技巧
在編寫(xiě)C語(yǔ)言程序后,經(jīng)常需要對(duì)源碼進(jìn)行優(yōu)化,以提高程序的運(yùn)行效率,不妨看看C語(yǔ)言?xún)?yōu)化小技巧都有哪些吧。以下僅供參考!
1、C于代碼在程序中的優(yōu)化
現(xiàn)在的C編譯器會(huì)自動(dòng)對(duì)代碼進(jìn)行優(yōu)化,但這些優(yōu)化是對(duì)執(zhí)行速度和代碼長(zhǎng)度的平衡。如果要獲得更小且執(zhí)行效率更高的代碼,需要程序員手工對(duì)代碼進(jìn)行優(yōu)化。
上海上嵌信息科技有限公司,一家專(zhuān)注口碑的嵌入式基地,嚴(yán)管理,重質(zhì)量!
2、變量類(lèi)型的定義
不同的數(shù)據(jù)類(lèi)型所生成的機(jī)器代碼長(zhǎng)度相差很多,變量類(lèi)型選取的范圍越小運(yùn)行速度越快,占用的內(nèi)存越少。能夠使用字符型)定義的變量,就不要使用整型(int)變量定義;能夠使用整型變量定義的變量就不要用長(zhǎng)整型(long int),能不使用浮點(diǎn)(float)變量就不要使用浮點(diǎn)型(double)變量。
相同類(lèi)型的數(shù)據(jù)類(lèi)型,有無(wú)符號(hào)對(duì)機(jī)器代碼長(zhǎng)度也有影響。因此我們應(yīng)按照實(shí)際需要合理的選用數(shù)據(jù)類(lèi)型。當(dāng)然,在定義變量后不要超過(guò)變量的作用范圍,如果超過(guò)變量的范圍賦值,C編譯器并不報(bào)錯(cuò),但程序運(yùn)行結(jié)果卻錯(cuò)了,而且這樣的錯(cuò)誤很難發(fā)現(xiàn)。
3、提高循環(huán)語(yǔ)言的效率
在 C 語(yǔ)言中循環(huán)語(yǔ)句使用頻繁,提高循環(huán)體效率的基本辦法就是降低循環(huán)體的復(fù)雜性。在多重循環(huán)中,應(yīng)將最長(zhǎ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é)是計(jì)算機(jī)之母,沒(méi)有數(shù)學(xué)的依據(jù)和基礎(chǔ),就沒(méi)有計(jì)算機(jī)的發(fā)展,所以在編寫(xiě)程序的時(shí)候,采用一些數(shù)學(xué)算法會(huì)對(duì)程序的執(zhí)行效率有數(shù)量級(jí)的提高。有時(shí)候這個(gè)問(wèn)題常常被大家忽略, 對(duì)于沒(méi)有經(jīng)驗(yàn)的程序員來(lái)說(shuō)更是如此。例如:求 1到100的自然數(shù)和sum = 100*(100+1)/2; 數(shù)學(xué)公式. (n +1)*n/2。
優(yōu)化算法和數(shù)據(jù)結(jié)構(gòu)對(duì)提高代碼的效率有很大的幫助。當(dāng)然有時(shí)候時(shí)間效率和空間效率是對(duì)立的,此時(shí)應(yīng)分析哪個(gè)更重要,做出適當(dāng)?shù)恼壑。另?在進(jìn)行優(yōu)化的時(shí)候不要片面的追求緊湊的代碼,因?yàn)榫o湊的代碼并不能產(chǎn)生高效率的機(jī)器碼。
【C語(yǔ)言?xún)?yōu)化小技巧】相關(guān)文章:
C語(yǔ)言高效編程的小技巧09-13
c語(yǔ)言?xún)?yōu)化階段07-11
c語(yǔ)言空間換時(shí)間優(yōu)化代碼的技巧方法06-19
WiFi優(yōu)化小技巧06-16
PHP性能優(yōu)化小技巧06-27