實現C語言高效編程的四大秘技

來源:互聯網
上載者:User

引言:

編寫高效簡潔的C語言代碼,是許多軟體工程師追求的目標。本文就工作中的一些體會和經驗做相關的闡述,不對的地方請各位指教。

第1招:以空間換時間

電腦程式中最大的矛盾是空間和時間的矛盾,那麼,從這個角度出發逆向思維來考慮程式的效率問題,我們就有瞭解決問題的第1招——以空間換時間。

例如:字串的賦值。

方法A,通常的辦法:

#define LEN 32
char string1 [LEN];
memset (string1,0,LEN);
strcpy (string1,“This is a example!!”);

方法B:

const char string2[LEN] =“This is a example!”;
char * cp;
cp = string2 ;
(使用的時候可以直接用指標來操作。)

從上面的例子可以看出,A和B的效率是不能比的。在同樣的儲存空間下,B直接使用指標就可以操作了,而A需要調用兩個字元函數才能完成。B的缺點在於靈活性沒有A好。在需要頻繁更改一個字串內容的時候,A具有更好的靈活性;如果採用方法B,則需要預存許多字串,雖然佔用了大量的記憶體,但是獲得了程式執行的高效率。

如果系統的即時性要求很高,記憶體還有一些,那我推薦你使用該招數。

該招數的變招——使用宏函數而不是函數。舉例如下:

方法C:

#define bwMCDR2_ADDRESS 4
#define bsMCDR2_ADDRESS 17
int BIT_MASK(int __bf)
{
return ((1U << (bw ## __bf)) - 1) << (bs ## __bf);
}
void SET_BITS(int __dst, int __bf, int __val)
{
__dst = ((__dst) & ~(BIT_MASK(__bf))) | \(((__val) << (bs ## __bf)) & (BIT_MASK(__bf))))
}
SET_BITS(MCDR2, MCDR2_ADDRESS, RegisterNumber);

方法D:

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.