从1月10号第一篇文章开始,到如今过去了4个月又20天,陆续写下了性能优化系列文章共计十二篇,大概一个月三篇的节奏。本篇文章是性能系列文章的最后一篇,没有新的大方向优化,讲一下写性能优化系列文章的些许事情:初心,过程,所得。面试
故事发生在去年年末:某版本上线前当我打开App,惟一的体验就是那如同乌龟爬行般的启动速度。不只被竞品碾压,更是碾压了个人技术荣辱心:本身作出的App表现差,就是本身差!这是我下定决心要对项目作性能优化的原由。性能优化
既然要实践性能优化,而我本身也有知识整理的习惯,那么写系列文章天然是水到渠成,顺即是对本身的一个督促。但还有一个缘由:微信
那既然我要作性能优化,就挑战下这个优秀且全面。也留下好的参考文章给后来的人!网络
性能优化的过程是一个很是困难的过程,须要你对优化的方向不只有知识上的充足储备还要有对现存业务上的了解。拿第一篇App启动优化来举例:app
难点在于中间三步:工具
而整理文章的过程更是难上加难,发布出来文章就是本身的一种承诺,既要具有专业性、又要通俗易懂;既要有深度,优化的招数又要尽量的全面。所以查文档、翻源码是屡见不鲜。而平时工做也较忙,所以对于一个月三篇的节奏我甚至以为有点高产(捂脸)。布局
谈到性能优化,相信各位开发Android的老司机和新司机,都能说上几句。而在面试过程当中性能优化也是必问的姿式。但人人都能说几句并不表明对性能优化的理解有多少,不信看几个问题:性能
相信很多司机确定说不全,但这条估计要让崇尚“背诵记忆准则”的小伙伴们笑了:我不理解原理,但也能说出几条优化的规则,你安能说我不懂性能优化?诚然性能优化有不少经验、准则能够参考借鉴,可是性能优化却不该该是背诵记忆的机械动做。若是不理解原理,对性能优化的认识、理解不足,任何场景都拿统一的套路生搬硬套,那优化的深度、全面性、适用性必定会大打折扣。学习
那么在这个并不轻松的性能优化过程当中,我获得了什么?测试
性能优化看似是个纯技术的事情,可是实际上和业务密不可分,毕竟任何技术都是在具体的业务场景下实践应用。所以不熟悉模块业务、具体实现而生搬硬套的话,性能优化工做每每无从下手。
性能优化不是一块孤立的知识,对性能优化的深刻理解须要方方面面的技术为辅助,此处仍然以第一篇启动优化为例。
尤为是第三点:每一项都有可能致使性能的瓶颈,而每一项均可以展开阐述,这个过程使你的技术能力得以强化。
大多数状况下,咱们都不创造知识而只是知识的搬运工,通常作的就是对知识的搜集和整合。那对咱们决胜就是快速的汲取知识以及完成对知识的判断及整合,知道什么地方会有权威、靠谱的资料,判断知识的使用场景等。
而写文章过程当中的各类痛苦也不是无用功,经历过不知道怎么写文章的窘迫,才会知道怎么肯定文章主题、主线、丰富文章,才会锻炼到本身的表达能力、文字组织能力。
四个字:防微杜渐。不少性能方面的问题都不是一朝一夕产生的,例如OOM,致使OOM发生的代码可能只是压死骆驼的最后一根稻草,前面不少地方已经埋下了隐患,只等最后一个地方点燃。还有不少代码自己并无错,确实实现了功能,可是放错了位置。
模块开发以前最好对技术方案进行评审,从实现上(源头)尽早规避低性能的实现方式;最好在功能完成以后,使用工具进行性能的分析,进行针对性的优化。
欢迎关注微信公众号:按期分享Java、Android干货!