成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Linux程序設計的一些優化措施

系統 Linux
Linux程序設計的一些優化措施是在平常的閱讀中,零散的獲得的,自己總結了一下,分享在這里。

[[201669]]

這些知識是在平常的閱讀中,零散的獲得的,自己總結了一下,分享在這里

全局變量VS函數參數

全局變量在Linux下的驅動編程里邊,用的是非常多,例如中斷服務函數ISR,基本上都可以用全局變量來作為數據的更新,及事件的觸發。給函數傳遞參數的效率一般來說,要低于直接使用全局變量,尤其是參數的數目太多的時候。參數傳遞,是需要先將參數push到stack中,等程序運行完畢,再從stack中pull出來,過程上要比global variable復雜。但是,全局變量過多的話,這里邊就設計到管理的問題了,到后面就很難去控制這些變量的修改,這對于函數的模塊化有不利的影響。

  1. i=i+1; 
  2.  
  3. i++; 
  4.  
  5. i--; 

 

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

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

switch-case語句

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

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

比如

  1. switch(msg_type) 
  2. case DATA: 
  3.       handle_data_fun(); 
  4.       break; 
  5. case RTS: 
  6.       handle_rts_fun(); 
  7.       break;  
  8.       ....... 
  9. }  

 

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

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

  1. int (*handle_fun[MAX])(struct msg_t *msg); 
  2.  
  3. int msg_type = msg->type; 
  4.  
  5. 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語句。 

責任編輯:龐桂玉 來源: 嵌入式Linux中文站
相關推薦

2010-03-16 09:15:20

2011-07-13 09:13:56

Android設計

2011-05-23 18:06:24

站內優化SEO

2019-08-16 09:40:22

混合云數據安全技術

2012-06-07 10:17:55

軟件設計設計原則Java

2009-09-27 11:09:42

API設計

2018-06-14 09:35:35

2021-06-10 10:02:19

優化緩存性能

2019-08-19 14:56:07

設計模式javascript

2009-11-26 10:32:57

PHP代碼優化

2019-09-17 09:21:01

2009-06-23 17:52:04

Linux程序設計

2009-06-23 18:13:21

2021-05-21 11:20:36

Linux命令文件

2022-02-27 10:13:42

分包Uiniapp項目

2017-04-08 17:12:36

設計模式抽象策略模式

2011-09-19 10:15:10

移動界面設計

2011-06-16 20:35:34

SEO

2011-07-13 10:12:56

SQL語句優化操作符優化

2011-07-05 15:22:04

程序設計
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 97视频免费 | 欧美涩 | 一区二区在线免费播放 | 亚洲高清视频在线 | 看羞羞视频 | 亚洲第一黄色网 | 日韩精品久久久久 | 欧美极品在线观看 | 亚洲精品乱| 免费的黄色片子 | 中文字幕亚洲一区 | 华人黄网站大全 | 久久com| 99精品久久久国产一区二区三 | 91最新在线视频 | 日韩一二区在线 | 欧美激情 一区 | 在线亚洲欧美 | 成人黄色在线 | 凹凸日日摸日日碰夜夜 | 99精品欧美一区二区蜜桃免费 | 欧美精品中文字幕久久二区 | 一区二区三区视频在线免费观看 | 中文字幕亚洲视频 | 欧美极品在线 | 阿v视频在线观看 | 不卡一区 | 国产日韩电影 | 色视频在线观看 | 中文一级片 | 中文字幕一区在线观看视频 | 黄色欧美| 久草色视频 | 精品亚洲国产成av人片传媒 | 国产精品乱码一区二区三区 | 一级欧美 | 日韩免费网站 | 亚洲一区精品在线 | 一级黄色淫片 | 91久久综合| www.国产精|