基础性工作:
1、 在编译动态库时,加上—version-map选项,控制导出函数。
2、 在编译动态库时,加上-fPIC选项,为以后使用Prelink优化做准备。
3、 将编译的动态库,全部放到一个指定目录下。
4、 将编译后的执行文件和动态库的符号,全部输出到指定目录,为以后分析做准备。
5、 使用Prelink,优化编译完成的执行文件和动态库。
特定目标优化:
1、 开机性能优化
* 了解当前系统启动时间,确定目标系统启动时间。
* 对开机过程的bash脚本进行优化,去除冗余,提高脚本自身的执行速度。
* 对开机过程中启动的进程所完成的任务要有所了解,对于一些不必要的进程要从启动过程中删掉。
* 缕清启动过程中进程之间的依赖关系,调整进程的启动次序,充分利用CPU资源。
* 了解启动过程中,各个进程所花费的时间,针对用时比较长的进程,考虑代码优化。
2、 进程启动优化
* 整理出由于无法满足进程响应时间,而将该进程改为守护进程的清单,对于这类进程努力提高其启动速度,将其从守护进程中删除。
* 整理出目前不满足用户输入响应时间要求的进程清单。
* 确认Prelink的方法生效。
* 优化动态库的搜索路径。
* 确认进程启动过程中,动态库加载的时间与用户代码响应时间。如果是动态库加载时间过长,考虑进程的动态库优化;如果是用户代码响应时间过长,考虑代码优化。
* 关于进程加载动态库的优化,可以考虑去除进程中不必要的动态库,动态库的合并与拆分。
* 对于GTK开发的应用来讲,可以采用调度的方法来节省掉其加载动态库的时间。
3、 系统守护进程优化
* 目标:减少守护进程的数量。
* 弄清当前系统内都有哪些守护进程及其原因。
* 由于进程启动时间达不到要求的守护进程,采用上面的方法进行优化。
* 将一些守护进程侦听事件部分,合并为一个进程,从而减少守护进程的数量。
4、 进程优化
* 整理应用程序中,都有哪些操作性能比较差,需要优化。
* 对于这些操作,分析其都完成了哪些操作,其性能瓶颈在什么地方,从软件逻辑上对其进行优化。
* 使用oprofile,查找底层热点函数,对于底层库函数实行代码优化。
* 了解系统中GTK的整体构架,查找带UI绘图的性能瓶颈,考虑采用GPU的硬加速的功能。
* 对于性能要求很高的多媒体应用来讲,先以逻辑优化为主,后期重点放在代码优化、硬加速方面。
5、 系统耗电量
* 系统耗电量的优化主要包括两部分:关闭不必要模块,降低CPU的频率。
* 确定系统大部分时间所处的状态,要争取其CPU处于较低的频率。
* 在确认这些状态之后,整理出在这些状态应用都做了哪些事情,对其进行逻辑优化。
* 使用oprofile,检测这些状态下热点函数情况,对其进行代码优化。
阅读(1370) | 评论(0) | 转发(0) |