C++代碼最佳化[轉摘]

來源:互聯網
上載者:User

(1)inline函數

(2)用指標代替數組

(3)不定義不使用的傳回值

(4)使用寄存器變數

(5)使用自增和自減操作符

(6)減少函數調用參數

(7)switch語句中根據發生頻率來進行case排序

(8)將大的switch語句轉為嵌套switch語句(同樣根據發生頻率來進行)

(9)如果switch中每一種情況下都有很多的工作要做,那麼把整個switch語句用一個指向函數指標的表來替換會更加有效,比如下面的switch語句,有三種情況:
enum MsgType{Msg1, Msg2, Msg3}
switch (ReceiveMessage()
{
case Msg1;
......
case Msg2;
.....
case Msg3;
.....
}

為了提高執行速度,用下面這段代碼來替換這個上面的switch語句。

/*準備工作*/
int handleMsg1(void);
int handleMsg2(void);
int handleMsg3(void);
/*建立一個函數指標數組*/
int (*MsgFunction [])()={handleMsg1, handleMsg2, handleMsg3};
/*用下面這行更有效代碼來替換switch語句*/
status=MsgFunction[ReceiveMessage()]();

(10)避免使用C++的昂貴特性。

單純的加入類既不會影響代碼的大小,也不會影響程式的效率。但C++的多重繼承、虛擬基類、模板、 異常處理及運行類型識別等特性對代碼的大小和效率有負面的影響,因此對於C++的一些特性要謹慎使用,可做些實驗看看它們對應用程式的影響。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.