作家
登录

Linux程序设计的一些优化措施

作者: 来源: 2017-08-31 10:39:15 阅读 我要评论

Linux法度榜样设计的一些优化办法

这些常识是在平常的浏览中,零碎的获得的,本身总结了一下,分享在这里

全局变量VS函数参数

  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语句。

【编辑推荐】

  1. 开辟一个Linux调试器(六):源码级慢慢履行
  2. Linux敕令行获取公网IP
  3. Linux根本防火墙设置和开放端口敕令
  4. 在Linux中瓜分和重组文件
  5. Linux Shell脚本履行超时怎么办?
【义务编辑:庞桂玉 TEL:(010)68476606】

全局变量在Linux下的驱动编程里边,用的是异常多,例如中断办事函数ISR,根本上都可以用全局变量来作为数据的更新,及事宜的触发。给函数传递参数的效力一般来说,要低于直接应用全局变量,尤其是参数的数量太多的时刻。参数传递,是须要先将参数push到stack中,等法度榜样运行完毕,再大年夜stack中pull出来,过程上要比global variable复杂。然则,全局变量过多的话,这里边就设计到治理的问题了,到后面就很难去控制这些变量的修改,这对于函数的模块化有晦气的影响。



  推荐阅读

  Win7存在巨大安全隐患? 升级最新Win10真能确保安全?

自微软宣布Win10正式版体系以来, 对于要不要应用,有一部分人一向是不雅望状况,并没有迫在眉睫的安装新体系。不得不说,Win7是绝对经典,尤其是很多游戏玩家的最爱。今天,一则“>>>详细阅读


本文标题:Linux程序设计的一些优化措施

地址:http://www.17bianji.com/lsqh/37038.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)