武汉嵌入式培训
达内武汉民大中心

15271940953

热门课程

嵌入式开发性能的评测与优化

  • 时间:2017-04-28
  • 发布:武汉嵌入式培训
  • 来源:嵌入式教程

性能的评测

对于开发人员来说,评价设备的性能一般是通过在代码中增加log的方式。这种方式具有以下几点优点:

1.精确度高

通常能够精确到毫秒。有特殊需求的情况下,可以精确到毫秒,比如使用gettimeofday函数。

2.灵活性强

可以测出代码中任意部分的代码运行所耗费的时间。

导致性能低下的原因

在嵌入式设备中,导入设备启动时间过长,性能低下的原因一般包括如下几个方面:

1.硬件的原因

硬件的原因一般指的是设备的CPU及Flash性能。如果代码的运算量很大,碍于CPU和Flash的性能,会导致CPU过于繁忙。有些设备碍于成本的原因,Flash太小,很多东西都需要压缩存放,那么在设备启动过程中,解压也需要一定的时间。

2.程序的原因

代码需要进行大量的IO操作,比如读写文件,内存访问等等,CPU更多的时候处于等待状态。而有些代码,由于编写的原因,导师各个进程之间相互等待,CPU利用率低下,制约了设备的性能。

优化的原则

优化并不能盲目的优化,盲目追求性能,还要统筹考虑。一般要遵循以下原则:

1.等效性原则:优化前后的代码实现的功能要完全一致。

2.有效性原则:优化后的代码一定要比原先的代码运行速度快,占用存储空间小,或者二者兼有,否则就是毫无意义的优化。

3.经济性原则:很多代码性能低下的部分原因也是由于硬件性能的限制,比如将文件压缩存放以节约存储成本。优化要在现有的条件下考虑,不要以更换存储空间的大小来换取解压的时间。优化要付出较小的代价,很多程序员在做优化的时候,抱怨设备的性能有限,要求提高设备的性能,这样只能是本末倒置。

优化的方法

此处提出的优化的方法主要是从代码的角度考虑,不包括升级硬件。

shell 脚本优化:

绝大多数的嵌入式设备都会使用busybox作为实现Linux命令的工具,因此BusyBox提供了一个比较完善的环境,可以适用于任何小的嵌入式系统。
BusyBox 是一个集成了一百多个最常用linux命令和工具的软件。BusyBox 包含了一些简单的工具,例如ls、cat和echo等等,还包含了一些更大、更复杂的工具,例grep、find、mount以及telnet。有些人将BusyBox称为Linux工具里的瑞士军刀。简单的说BusyBox就好像是个大工具箱,它集成压缩了Linux的许多工具和命令,也包含了Android系统的自带的shell。

BusyBox包含三种类型的命令:

APPLET:即为人所熟知的applets,它由BusyBox创建一个子进程,然后调用exec执行相应的功能,在执行完毕后,返回控制给父进程。

APPLET_NOEXEC:系统将调用fork创建子进程,然后执行BusyBox中相应的功能,在执行完毕后,返回控制给父进程。

APPLET_NOFORK:它相当于builts-in,只是执行BusyBox的内部函数,不必创建子进程,所以其效率极高。

众所周知,在Linux中调用fork,exec是很耗费时间的,所以我们应该尽可能的使用APPLET_NOFORK命令,其次是APPLET_NOEXEC,最后是APPLET。
在BusyBox1.9中,属于APPLET_NOFORK的功有:basename,cat,dirname,echo,false,hostid,length,logname,mkdir,pwd,rm,rmdir,deq,sleep,sync,touch,true,usleep,whoami,yes属于APPLET_NOEXEC的功能有:awk,chgrp,chmod,chown,cp,cut,dd,find,hexdump,ln,soort,test,xargs......

所以优化shell脚本的策略一般有:

1. 去掉无用的脚本

2. 尽可能的使用BusyBox内部的命令

3. 尽量不要使用管道pipe

4. 减少管道中的命令数目

5. 尽量不要使用·

更多资讯敬请关注”武汉达内“官网!

上一篇:嵌入式工程师能力结构的构成
下一篇:武汉嵌入式培训:嵌入式开发要学习哪些知识?

武汉嵌入式培训:嵌入式如何系统学习

RTOS核心——调度和分割

向量中断与非向量中断

选择城市和中心
贵州省

广西省

海南省