偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

Linux程序設(shè)計(jì)的一些優(yōu)化措施

系統(tǒng) Linux
Linux程序設(shè)計(jì)的一些優(yōu)化措施是在平常的閱讀中,零散的獲得的,自己總結(jié)了一下,分享在這里。

[[201669]]

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

全局變量VS函數(shù)參數(shù)

全局變量在Linux下的驅(qū)動(dòng)編程里邊,用的是非常多,例如中斷服務(wù)函數(shù)ISR,基本上都可以用全局變量來(lái)作為數(shù)據(jù)的更新,及事件的觸發(fā)。給函數(shù)傳遞參數(shù)的效率一般來(lái)說(shuō),要低于直接使用全局變量,尤其是參數(shù)的數(shù)目太多的時(shí)候。參數(shù)傳遞,是需要先將參數(shù)push到stack中,等程序運(yùn)行完畢,再?gòu)膕tack中pull出來(lái),過(guò)程上要比global variable復(fù)雜。但是,全局變量過(guò)多的話,這里邊就設(shè)計(jì)到管理的問(wèn)題了,到后面就很難去控制這些變量的修改,這對(duì)于函數(shù)的模塊化有不利的影響。

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

 

這三個(gè)語(yǔ)句都通常引用在for()或者是while()里邊,從執(zhí)行效率上來(lái)說(shuō) 3》2》1

這和最終生成的匯編語(yǔ)言有關(guān),一般來(lái)說(shuō),影響不會(huì)太夸張。

switch-case語(yǔ)句

switch-case語(yǔ)句,也是用的非常多的語(yǔ)句。

這里首先的優(yōu)化原則就是:將發(fā)生概率***的條件,放在***判斷的位置。這樣就能夠有效的降低比較的次數(shù),達(dá)到更優(yōu)的效果?;蛘?,有一種更好的方法來(lái)替代switch-case語(yǔ)句的方法,就是利用查表

比如

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

 

這里就可以用函數(shù)指針和查表的方式,獲得handle_fun的方法來(lái)替代。

處理函數(shù)都在初始化的過(guò)程中,放到*handle_fun[MAX]相應(yīng)的位置上

  1. int (*handle_fun[MAX])(struct msg_t *msg); 
  2.  
  3. int msg_type = msg->type; 
  4.  
  5. handle_fun[msg_type](msg);//即可 

 

這種方法,在Linux的網(wǎng)絡(luò)協(xié)議里邊,用的非常多,一般對(duì)應(yīng)的查表方式為hash表結(jié)構(gòu)。

sturct 和 union的使用

sturcut 使用,一定要考慮到字節(jié)對(duì)其的問(wèn)題,struct中,不同的安排順序,sizeof是不同的所以要調(diào)整好位置,盡量保證struct的size最小。

union的使用,比如對(duì)不同包的數(shù)據(jù)結(jié)構(gòu)上,是不一樣的,所以盡量使用union來(lái)區(qū)分不同的包結(jié)構(gòu)這樣對(duì)程序的可讀性比較好。

volatile的使用

這在驅(qū)動(dòng)編程方面是非常有用的一個(gè)標(biāo)志。目的是不讓編譯器compiler把當(dāng)前的變量?jī)?yōu)化掉。尤其是涉及到硬件寄存器的值的時(shí)候。

乘除運(yùn)算的簡(jiǎn)化

乘除運(yùn)算,對(duì)arm來(lái)說(shuō)太致命,arm的乘除都生成一堆的匯編指令才能完成。所以一般可以通過(guò)位操作,比如移位,取低位來(lái)進(jìn)行適當(dāng)?shù)幕?jiǎn)。比如 a*8 = a<<3;

Inline 函數(shù)

在實(shí)現(xiàn)比較簡(jiǎn)單功能的函數(shù),以及那些調(diào)用非常平凡的函數(shù),都可以在函數(shù)前加入inline的標(biāo)識(shí)。這樣在產(chǎn)生匯編的時(shí)候,能夠更有效。也可以替代較復(fù)雜的define語(yǔ)句。 

責(zé)任編輯:龐桂玉 來(lái)源: 嵌入式Linux中文站
相關(guān)推薦

2010-03-16 09:15:20

2011-07-13 09:13:56

Android設(shè)計(jì)

2011-05-23 18:06:24

站內(nèi)優(yōu)化SEO

2019-08-16 09:40:22

混合云數(shù)據(jù)安全技術(shù)

2012-06-07 10:17:55

軟件設(shè)計(jì)設(shè)計(jì)原則Java

2009-09-27 11:09:42

API設(shè)計(jì)

2019-08-19 14:56:07

設(shè)計(jì)模式javascript

2021-06-10 10:02:19

優(yōu)化緩存性能

2018-06-14 09:35:35

2009-11-26 10:32:57

PHP代碼優(yōu)化

2019-09-17 09:21:01

2021-05-21 11:20:36

Linux命令文件

2009-06-23 17:52:04

Linux程序設(shè)計(jì)

2009-06-23 18:13:21

2017-04-08 17:12:36

設(shè)計(jì)模式抽象策略模式

2011-09-19 10:15:10

移動(dòng)界面設(shè)計(jì)

2022-02-27 10:13:42

分包Uiniapp項(xiàng)目

2011-06-16 20:35:34

SEO

2011-07-13 10:12:56

SQL語(yǔ)句優(yōu)化操作符優(yōu)化

2011-07-05 15:22:04

程序設(shè)計(jì)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)