i=i 1; i ; i–;

  這三個語句都通常引用在for()或者是while()里邊,從執行效率上來說 3》2》1

  這和最終生成的匯編語言有關,一般來說,影響不會太夸張。

  switch-case語句

  switch-case語句,也是用的非常多的語句。

  這里首先的優化原則就是:將發生概率最高的條件,放在最先判斷的位置。這樣就能夠有效的降低比較的次數,達到更優的效果。或者,有一種更好的方法來替代switch-case語句的方法,就是利用查表

  比如

  switch(msg_type) { case DATA: handle_data_fun(); break; case RTS: handle_rts_fun(); break; ……. }

  這里就可以用函數指針和查表的方式,獲得handle_fun的方法來替代。

  處理函數都在初始化的過程中,放到*handle_fun[MAX]相應的位置上

  int (*handle_fun[MAX])(struct msg_t *msg); int msg_type = msg->type; handle_fun[msg_type](msg);//即可

  這種方法,在Linux的網絡協議里邊,用的非常多,一般對應的查表方式為hash表結構。

  sturct 和 union的使用

  sturcut 使用,一定要考慮到字節對其的問題,struct中,不同的安排順序,sizeof是不同的所以要調整好位置,盡量保證struct的size最小。

  union的使用,比如對不同包的數據結構上,是不一樣的,所以盡量使用union來區分不同的包結構這樣對程序的可讀性比較好。

  volatile的使用

  這在驅動編程方面是非常有用的一個標志。目的是不讓編譯器compiler把當前的變量優化掉。尤其是涉及到硬件寄存器的值的時候。

  乘除運算的簡化

  乘除運算,對arm來說太致命,arm的乘除都生成一堆的匯編指令才能完成。所以一般可以通過位操作,比如移位,取低位來進行適當的化簡。比如 a*8 = a<<3;

  Inline 函數

  在實現比較簡單功能的函數,以及那些調用非常平凡的函數,都可以在函數前加入inline的標識。這樣在產生匯編的時候,能夠更有效。也可以替代較復雜的define語句。

更多關于云服務器域名注冊,虛擬主機的問題,請訪問三五互聯官網:m.shinetop.cn

贊(0)
聲明:本網站發布的內容(圖片、視頻和文字)以原創、轉載和分享網絡內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。郵箱:3140448839@qq.com。本站原創內容未經允許不得轉載,或轉載時需注明出處:三五互聯知識庫 » Linux程序設計有那些優化方法

登錄

找回密碼

注冊

主站蜘蛛池模板: 欲色欲色天天天www| 国产日韩AV免费无码一区二区三区| 国产精品久久久久乳精品爆| 国产精品白浆免费视频| 高清偷拍一区二区三区| 日韩有码中文字幕av| 亚洲一区二区三区十八禁| 大陆熟妇丰满多毛xxxx| 欧美丰满熟妇性xxxx| 伊人久久大香线蕉AV网| 国产精品不卡一区二区三区| 中文无码人妻有码人妻中文字幕| 高清国产一区二区无遮挡| 亚洲综合精品成人| av色蜜桃一区二区三区| 亚洲一区二区三区18禁| 亚洲人成网网址在线看| 中文字幕无码精品亚洲35| 国产免费无遮挡吃奶视频| 亚洲av成人午夜福利| 草草浮力影院| 亚洲永久精品一区二区三区| 色av永久无码影院av| 亚洲国产成人久久综合一区77| 亚洲精品综合第一国产综合| 久久大香萑太香蕉av黄软件| 亚洲男人天堂东京热加勒比| 国产亚洲无日韩乱码| 赣州市| 亚洲情A成黄在线观看动漫尤物| 久久国产自偷自免费一区| 加勒比无码人妻东京热| 国产精品麻豆va在线播放| 国产一区二区精品久久呦| 精品国产精品三级精品av网址| 国内精品伊人久久久影视| 国产综合色在线精品| 新版天堂资源中文8在线 | 色老99久久九九爱精品| 亚洲人成电影网站 久久影视| 激,情四虎欧美视频图片|