陌陌应用性能如何实现30%的飞跃式提升?:产品化实践!
- 内容介绍
- 文章标签
- 相关推荐
唉,说起性能优化,简直就是程序员的噩梦啊!特别是像我们这种用户量庞大的应用,稍微有点问题就可能影响几百万人的使用体验。之前咱们陌陌的性能也确实是...咳咳,不够稳定,经常接到用户反馈说卡顿、耗电快之类的。那时候真是焦头烂额, 你看啊... 各种排查、各种优化,感觉永远都在跟时间赛跑。后来经过团队的努力,终于搞出了一个还算靠谱的性能剖析平台,效果那是相当滴棒!整整提升了30%的性能!今天就跟大家聊聊这其中的一些血泪教训和经验分享。
Continous Profiling:从Google论文到陌陌实践
痛并快乐着。 Continous Profiling的概念起源于 Google 的论文,是一种在应用运行时收集应用程序相关信息的动态分析手段,让性能分析贯穿应用的整个生命周期。这玩意儿听起来很高大上吧?其实就是想在应用跑起来之后持续地去观察它的内部情况,看看哪些地方有问题。以前我们都是事后分析coredump或者jstack之类的文件,那效率太低了!而且很多问题都是偶发性的,等你复现的时候它就不出现了。所以我们需要一种能够实时监控、实时分析的方法。

婚芭莎App的APM性能监控实践.感兴趣的小伙伴快来看看吧: 大会名称:DataFunTalk 年终 ·大会 指导单位: 北京智源人工智能研究院 活动主办:DataFunTalk、 apollo 开发者社区、人民邮电出版社 异步社区 钻石赞助:开课吧 白金赞助:爱奇艺、网易易数、Tubi、英迈、英伟达 合作媒体:赛氪、机器学习算法与自然语言处理 合作社区:DataWhale、OpenKG 合作伙伴:腾讯、阿里巴巴达摩院、华为诺亚方舟实验室。
方法调用栈和CPU占比
我们知道方法的调用栈是由一个个栈帧组成, 当发生函数调用会开辟新的栈空间,将函数参数、局部变量、返回地址等入栈,栈帧遵循后进先出的原则,最近被调用的函数的栈帧位于栈顶,而先前调用的函数的栈帧位于栈中,调用链起始处的函数则位于栈底。
唉,说起性能优化,简直就是程序员的噩梦啊!特别是像我们这种用户量庞大的应用,稍微有点问题就可能影响几百万人的使用体验。之前咱们陌陌的性能也确实是...咳咳,不够稳定,经常接到用户反馈说卡顿、耗电快之类的。那时候真是焦头烂额, 你看啊... 各种排查、各种优化,感觉永远都在跟时间赛跑。后来经过团队的努力,终于搞出了一个还算靠谱的性能剖析平台,效果那是相当滴棒!整整提升了30%的性能!今天就跟大家聊聊这其中的一些血泪教训和经验分享。
Continous Profiling:从Google论文到陌陌实践
痛并快乐着。 Continous Profiling的概念起源于 Google 的论文,是一种在应用运行时收集应用程序相关信息的动态分析手段,让性能分析贯穿应用的整个生命周期。这玩意儿听起来很高大上吧?其实就是想在应用跑起来之后持续地去观察它的内部情况,看看哪些地方有问题。以前我们都是事后分析coredump或者jstack之类的文件,那效率太低了!而且很多问题都是偶发性的,等你复现的时候它就不出现了。所以我们需要一种能够实时监控、实时分析的方法。

婚芭莎App的APM性能监控实践.感兴趣的小伙伴快来看看吧: 大会名称:DataFunTalk 年终 ·大会 指导单位: 北京智源人工智能研究院 活动主办:DataFunTalk、 apollo 开发者社区、人民邮电出版社 异步社区 钻石赞助:开课吧 白金赞助:爱奇艺、网易易数、Tubi、英迈、英伟达 合作媒体:赛氪、机器学习算法与自然语言处理 合作社区:DataWhale、OpenKG 合作伙伴:腾讯、阿里巴巴达摩院、华为诺亚方舟实验室。
方法调用栈和CPU占比
我们知道方法的调用栈是由一个个栈帧组成, 当发生函数调用会开辟新的栈空间,将函数参数、局部变量、返回地址等入栈,栈帧遵循后进先出的原则,最近被调用的函数的栈帧位于栈顶,而先前调用的函数的栈帧位于栈中,调用链起始处的函数则位于栈底。

