Zomato 是一家印度跨国餐厅聚合和食品配送公司,仅在印度的 500 多个城市为客户提供服务。拥有超过 4300 万活跃用户,平均每天 150 多万订单,是印度最受欢迎的食品订购和配送服务之一。这也意味着客户使用各种各样的设备,并且网络可用性也不同。除了快速送达外,这还使得在应用上拥有流畅无缝的体验变得至关重要。
用户期望应用打开时间和响应速度很快 应用打开时间和响应速度。改进此指标不仅会直接影响应用指标,还会确保更多订单完成并支持 Zomato 的战略——扩展到新市场并在低端到中端设备上提供更好的体验。这最终帮助他们吸引下一批十亿用户。应用打开时间也可以作为漏斗规模增加的预测指标,因为他们的用户会进一步进入销售漏斗。
Zomato 通过专注于应用指标获得了令人印象深刻的收益。例如,将应用加载时间加快 30% 导致第 1 天客户留存率提高了约 90%!
挑战
Zomato 快速的开发步伐和对功能添加的关注,虽然对客户来说很棒,但也导致需要优化其代码库和用户体验。在追求添加新功能的同时,Zomato 也希望保持其性能水平。由于多个 SDK 消耗了并非始终需要的资源,因此需要简化和合理化代码库。
所有这一切都得到了 Zomato 向印度二线和三线城市扩张的支持,这些城市的人们主要使用处理能力相对有限的低端到中端设备。随着这些设备的加入,团队必须确保与高端设备相同的世界一流用户体验。
他们做了什么?
Zomato 使用了一个简单的标准来分析其开销——哪种解决方案可以提供最佳的投资回报率与开发团队的工作量之比。使用此标准,团队开始了为期 4 个月的优化和改进之旅。
第一步是查看系统跟踪以查找问题、进行基于时间分析并相应地确定优先级。Perfetto 是分析、分析和跟踪 Android 进程的完美工具。Zomato 利用该工具跟踪在应用启动期间初始化的所有 SDK,并指出可以删除或延迟加载的 SDK。
删除旧版 SDK 和未使用的第三方库是重中之重,因为它是一项低成本、高收益的任务。这种方法帮助 Zomato 节省了宝贵的 20% 的应用启动时间。
许多第三方库使用内容提供程序在应用启动时进行初始化,这会影响应用启动时间。Zomato 使用 Facebook SDK 进行登录,但用户还有其他登录选项,因此在启动时初始化 SDK 是低效的。随着 应用启动库 的引入,Zomato 仅在用户选择 Facebook 登录选项时才加载 SDK。这帮助他们将启动时间减少了约 6%!
下一步是改进视图的加载时间,因为在像 Zomato 这样复杂的 UI 结构中,视图本身的渲染和加载可能需要相当长的时间。 ViewStub 有助于提高效率,因为它允许创建视图,但除非需要,否则不会将其添加到视图层次结构中。与使用 View.GONE 相比,ViewStub 更有效率,因为即使视图处于 GONE 状态,它也会被加载并消耗内存和 CPU 资源。Zomato 优化了他们的视图层次结构,并在其登录活动中合并了布局和 ViewStub。这些更改使加载时间显著提高了 7%。
Android Profiler 有助于优化内存使用,因为它允许实时跟踪 CPU 活动、内存和网络。Profiler 使他们能够识别锁定情况和内存开销的根本原因,并相应地进行修复。Zomato 还改进了他们的缓存机制,从而使内存不足错误大幅减少了 60%。
操作 | 之前(秒) | 之后(秒) | 改进 |
---|---|---|---|
删除了旧版 SDK 和未使用的第三方库 | 4.873 | 3.813 | 21.74% |
库的延迟加载 | 3.814 | 3.577 | 6.2% |
布局改进,ViewStub | 2.529 | 2.348 | 7.15% |
应用启动时间 = 应用初始化 + 库加载时间 + 视图加载时间
结果
Zomato 的性能提升帮助他们创造了更加流畅的用户体验。进一步的 UI 改进和缓存也减少了卡顿。
从应用图标点击到完全加载并可使用的首页(App to homepage)是 Zomato 内部跟踪的关键业务指标。在实施改进后,他们在这个指标上看到了有意义的增长。在此期间,访问完全加载页面的用户增加了约 20%。
**这导致第一天用户留存率提高了约 90%!** 这些改进也对他们的后续漏斗产生了连锁反应——整体订单转化率(首页 -> 菜谱 -> 购物车 -> 订单)提高了约 1.5 个百分点,即每月增加了约 60 万订单。
根据 Firebase Performance 的冷启动指标,平均提升了 25%,对于低端/中端设备,冷启动时间的提升甚至达到了 30%。
应用启动时间性能是影响用户感知的重要指标,投入精力优化性能也会对业务产生重大影响。
“在 Zomato,提供并构建卓越的用户体验一直是我们理念的核心。我们相信性能是关键因素之一,因此我们的团队努力追求工程卓越,利用 Google 的开发者工具改进应用加载时间,并在实际应用中取得了显著成果。通过此举,我们希望为印度的在线订餐需求提供闪电般的快速应用,并为我们的未来发展树立基准。”
— Sajal Gupta,Zomato 工程经理