如何从程序优化的角度解释淘宝支付宝的安卓版卡顿?
回答·5
最热
最新
- 作为前支付宝 Android 客户端负责性能优化的工程师,我说说我的感受。 支付宝卡顿的原因在于,其内部业务过于复杂,而又不愿意为用户体验让步,占用太多系统资源导致系统卡顿。 我举个例子,曾经支付宝客户端在启动时,其峰值线程数目会达到 300+个;线程调度引发的上下文切换都会导致性能问题,我们曾经通过 hack 的方式去优化 context switch,某些手机上竟然能有 15%的提升。在没有做过业务治理之前,过多的后台广播和 service 会严重影响性能。打个比方,如果有 400 个 BroadcastReceiver 组件,每次 onReceive 平均耗时 5ms,那么就是 2秒;注意 onReceive 回调发生在主线程,2s会产生多少掉帧? 支付宝首页上面的四大金刚,中间的九宫格,消息卡片和商业化卡片,甚至其他 tab 的理财和口碑都会在启动后同时运行;每次支付宝发版之前,我最头疼的事情就是要找出那些新增的影响性能的业务代码。 与其他超级 App 相比,支付宝和淘宝是低频应用;就拿微信与抖音来说,他们的用户时长非常长,启动之后基本上是常驻的,而支付宝,打开个付款页面就退出了,导致每次启动都是冷启动,没有初始化的业务又要再初始化一遍。单独与微信比的话,微信其实业务很简单,就是一个聊天功能;打开之后并不会有什么额外的业务运行;很多功能现在集中在小程序上面,而打开小程序其实就开启了另外一个进程;与主体功能无关了。 不过我说的这些情况已经是 3 年前的事情了,现在的支付宝相比以前应该是好了很多。
- 拒绝回答。回答这个问题一点意义都没有浪费时间。
- 你该换手机了🤪🤪🤪
- 一般 app 最多的也就 100 来个线程,淘宝那群鸟人开了两百多个线程,甭管有没有在跑,你啥也不干也占用内存的,能流畅才怪呢
- 淘宝和支付宝不是纯安卓 是安卓加 html 开发 html 加载受网速影响 卡顿是是正常的 因为淘宝和支付宝的内容每天变更较多 采用纯安卓开发效率太低 所以采用安卓加 html 的形式 另外淘宝和支付宝模块太多了 我估计不光是多线程 可能都是多进程工作 有卡顿也是正常的