- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
嵌入式linux优化嵌入式linux优化 - 华清远见
嵌入式Linux优化
嵌入式Linux优化
嵌入式Linux优化
加快系统起动和应用起动的过程
加快系统起动和应用起动的过程
主讲:李先静
主讲:李先静
优化第一原则
Don’t optimize
– 够用就好
– 选择更好的硬件
Optimization: Your Worst Enemy
– 破坏封装(直接访问内部数据)
– 减少抽象(直接调用实现函数)
– 破坏软件架构
理想与现实
Linux系统起动太慢了
表现较差的
– Fedora 10 45s
– Openmoko 120s
表现较好的
– Android g1 ~ 40s
– Broncho ~ 35s
最好的
– Moblin 5s
用户体验才是目标
优化算法
延迟处理
– 初始化时只做必要的任务,非关键的任务在第一次使用时
者空闲时再初始化。
– 先显示界面,再初始内部逻辑。
欺骗用户
– 先显示上次退出时界面的图片
转移用户注意力
– 动画/等待光标
缺点变成特色
– 不慢就不够档次
Linux初始化过程
Bootloader
Kernel
Init
Service
Desktop/Login
Applications
时间去哪里了
Kernel 2s
Mount
Init
Service
Desktop
Applications
30s – 120s
没有调查就没有发言权
没有调查就没有发言权
– Gprof
– Sysprofile
– OProfile
– Vtune
– Bootchart
– LD_ DEBUG
Bootchart sample
Sysprof screenshot
Oprofie screenshot
Vtune screenshot
选择合适的硬件
CPU
RAM
FLASH
KISS原则
Keep It simple, Stupid!
选择合适的组件
轻量级的GUI
轻量级的libc(bionic/uclibc)
选择高效的算法
预先计算
查找表
空间换时间
快速排序
二分查找
•…
选择合适的数据格式
用二进制文件代替文本文件
减少间接性
直接访问内部成员(去掉get/set)
减少抽象层次
低级优化
避免浮点数
避免除法
避免动态内存
循环展开
循环反转(i--代替i++)
循环内计算外移
Inline
用指针传递参数
•…
制作发布版本
关闭LOG
优化标
关闭调试代码
Strip符号信息
Preload共享库
Fork+dlopen代替fork+exec
父进程Preload共享库,子进程直接使用
readahead
减少IO等待时间
要求较大的RAM空间
文件系统
尽量使用只读文件系统
关机时保存Yaffs2 的checkpoint,避免
开机的扫描。
针对动态库的优化
减少动态库数目
减少查找动态库的路径
Ldconfig
Prelink
Gnu hash
Eabi
删除不必要的文件
针对的进程优化
多个服务放在一个进程中
多个应用程序放在一个进程中
常驻常用的应用程序
原创力文档


文档评论(0)