Android 性能优化(十二)之我为何写性能优化

从1月10号第一篇文章开始,到如今过去了4个月又20天,陆续写下了性能优化系列文章共计十二篇,大概一个月三篇的节奏。本篇文章是性能系列文章的最后一篇,没有新的大方向优化,讲一下写性能优化系列文章的些许事情:初心,过程,所得。面试

一、 初心

1.1 为何要作全方位、深刻的性能优化?

故事发生在去年年末:某版本上线前当我打开App,惟一的体验就是那如同乌龟爬行般的启动速度。不只被竞品碾压,更是碾压了个人技术荣辱心:本身作出的App表现差,就是本身差!这是我下定决心要对项目作性能优化的原由。性能优化

1.2 为何写系列文章?

既然要实践性能优化,而我本身也有知识整理的习惯,那么写系列文章天然是水到渠成,顺即是对本身的一个督促。但还有一个缘由:微信

  • 翻阅各类资料,我发现,官方文档做为性能优化过程当中最佳的参考资料,而国内开发者的翻译水平不敢过于恭维以及不少开发者关注的角度不一,致使不多有优秀而且全面的参考文章。

那既然我要作性能优化,就挑战下这个优秀且全面。也留下好的参考文章给后来的人!网络

二、 过程

2.1 性能优化不是舒适的请客吃饭

性能优化的过程是一个很是困难的过程,须要你对优化的方向不只有知识上的充足储备还要有对现存业务上的了解。拿第一篇App启动优化来举例:app

  1. 查看官方文档对启动优化的概述;
  2. 梳理App启动的逻辑;
  3. 使用工具对启动逻辑代码进行准确的度量;
  4. 针对瓶颈肯定优化方案;
  5. 优化、测试。

难点在于中间三步:工具

  • App多人开发,又历经多个版本,没人说得清App启动有多少逻辑以及补偿逻辑;
  • 不一样风格的代码读起来,那感受绝对是一个酸爽;
  • 确认了问题点,如何优化?重构仍是重作?

而整理文章的过程更是难上加难,发布出来文章就是本身的一种承诺,既要具有专业性、又要通俗易懂;既要有深度,优化的招数又要尽量的全面。所以查文档、翻源码是屡见不鲜。而平时工做也较忙,所以对于一个月三篇的节奏我甚至以为有点高产(捂脸)。布局

2.2 对优化,其实你只是只知其一;不知其二

谈到性能优化,相信各位开发Android的老司机和新司机,都能说上几句。而在面试过程当中性能优化也是必问的姿式。但人人都能说几句并不表明对性能优化的理解有多少,不信看几个问题:性能

  1. Android的内存管理在Dalvik和ART上有什么区别?经过adb获取内存信息时,哪一个值是真正可回收的内存占用量?
  2. 如何计算资源图片所占的内存?
  3. 线程的优先级和进程有关吗?

相信很多司机确定说不全,但这条估计要让崇尚“背诵记忆准则”的小伙伴们笑了:我不理解原理,但也能说出几条优化的规则,你安能说我不懂性能优化?诚然性能优化有不少经验、准则能够参考借鉴,可是性能优化却不该该是背诵记忆的机械动做。若是不理解原理,对性能优化的认识、理解不足,任何场景都拿统一的套路生搬硬套,那优化的深度、全面性、适用性必定会大打折扣。学习

三、 所得

那么在这个并不轻松的性能优化过程当中,我获得了什么?测试

3.1 对产品业务的熟悉

性能优化看似是个纯技术的事情,可是实际上和业务密不可分,毕竟任何技术都是在具体的业务场景下实践应用。所以不熟悉模块业务、具体实现而生搬硬套的话,性能优化工做每每无从下手。

3.2 对性能优化的深刻理解

性能优化不是一块孤立的知识,对性能优化的深刻理解须要方方面面的技术为辅助,此处仍然以第一篇启动优化为例。

  • 应用启动分类及过程;
  • 启动优化方式;
  • Heavy app initialization(包含线程使用、网络请求、IO、布局嵌套等)。

尤为是第三点:每一项都有可能致使性能的瓶颈,而每一项均可以展开阐述,这个过程使你的技术能力得以强化。

3.3 知识整理和文档能力

大多数状况下,咱们都不创造知识而只是知识的搬运工,通常作的就是对知识的搜集和整合。那对咱们决胜就是快速的汲取知识以及完成对知识的判断及整合,知道什么地方会有权威、靠谱的资料,判断知识的使用场景等。

而写文章过程当中的各类痛苦也不是无用功,经历过不知道怎么写文章的窘迫,才会知道怎么肯定文章主题、主线、丰富文章,才会锻炼到本身的表达能力、文字组织能力。

四、 其它

4.1 为何要重视性能优化?

  • 性能优化的学习与实践是技术人员成长进步的一条途径,同时也是改善代码质量的一次机会。
  • 伴随着App功能的增多,性能问题随之而来,不夸张的说任何App都有性能问题,只是程度不一样。任由性能问题存在却视而不见最终一点会有集中式的爆发,那后果不只仅是技术上的失责,更会影响产品及用户。
  • 性能优化的过程自己也是一个精益求精的过程,表明了你对代码的重视,对高质量应用的追求。

4.2 性能优化有哪些好的资料推荐?

  1. Android性能优化典范,官方推出,必属精品。不只仅告诉你哪里有问题,更告诉你为何!
  2. 胡凯的博客,翻译了关于Android性能优化典范的内容,不想看视频的话能够参考博客。不过官方的典范及翻译都是偏理论性,须要本身去实践。
  3. 官方文档,不论是Training模块仍是API模块,都藏了不少干货。
  4. 《移动App性能评测与优化》,腾讯TMQ专项测试团队的大做,深刻底层,追本溯源,精益求精,带给人技术上提高的同时更端正作技术的态度,强烈推荐!

4.3 对性能优化,平时怎么作?

四个字:防微杜渐。不少性能方面的问题都不是一朝一夕产生的,例如OOM,致使OOM发生的代码可能只是压死骆驼的最后一根稻草,前面不少地方已经埋下了隐患,只等最后一个地方点燃。还有不少代码自己并无错,确实实现了功能,可是放错了位置。

模块开发以前最好对技术方案进行评审,从实现上(源头)尽早规避低性能的实现方式;最好在功能完成以后,使用工具进行性能的分析,进行针对性的优化。

4.4 其它

  • 优化完成以后务必充分测试,不然虽然性能是高了可是出现Bug也是不能接受的;
  • 推荐你们写博客,或者整理、总结也好;
  • 不忘初心,方得始终。

欢迎关注微信公众号:按期分享Java、Android干货!

欢迎关注
相关文章
相关标签/搜索