应用速度提升 30%:Zomato 增长秘诀的关键要素

Zomato 是一家印度跨国餐厅聚合和外卖公司,仅在印度就为 500 多个城市的客户提供服务。凭借超过 4300 万活跃客户和平均每天 150 万订单,它是该国最受欢迎的订餐和外卖服务之一。这也意味着客户使用各种设备,并且网络可用性也各不相同。除了快速送货,在应用程序上拥有流畅无缝的体验也至关重要。

用户期望快速的应用打开时间和响应速度。提高此指标不仅直接影响应用生命体征,还能确保更多订单完成并支持 Zomato 的战略——扩展到新市场并在中低端设备上提供更好的体验。这最终有助于他们获取下一个十亿用户。应用打开时间也作为漏斗规模增大的预测指标,因为用户会进一步进入销售漏斗。

Zomato 通过关注应用生命体征获得了显著的收益。例如,将应用加载时间加快 30% 使得第一天客户留存率提高了约 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 有助于提高效率,因为它允许创建视图但不将其添加到视图层次结构中,除非需要。Viewstub 比使用 View.GONE 更高效,因为即使视图处于 GONE 状态,它也会被膨胀并占用内存和 CPU 使用率。Zomato 在其登录活动中扁平化了视图层次结构,并合并了布局和 Viewstub。这些更改显著地将膨胀时间缩短了 7%。

Android 性能分析器通过实时跟踪 CPU 活动、内存和网络,帮助优化内存使用。性能分析器使他们能够识别锁定情况和内存开销的根本问题,并相应地进行修复。Zomato 还致力于改进其缓存机制,从而使内存不足问题大幅下降 60%。

行动 之前(秒) 之后(秒) 改进
移除遗留 SDK、未使用的第三方库 4.873 3.813 21.74%
延迟加载库 3.814 3.577 6.2%
布局改进、Viewstub 2.529 2.348 7.15%

应用启动时间 = 应用初始化 + 库加载时间 + 视图膨胀时间

结果

Zomato 的性能提升帮助他们创造了更流畅的体验。进一步的 UI 改进和缓存也减少了卡顿。

应用到主页(点击应用图标到完全加载且可用的主页)是 Zomato 内部跟踪的一个关键业务指标。实施改进后,他们发现此指标显著上升。在此期间,登陆完全加载页面的客户增加了约 20%。

这使得第一天客户留存率提高了约 90%!这些改进也对他们的后续漏斗产生了连锁效应——整体订单通过率(主页 -> 菜单 -> 购物车 -> 订单)提高了约 1.5 个百分点,即每月约 60 万个订单。

根据 Firebase 性能的冷启动指标,平均提高了 25%,对于中低端设备,冷应用启动时间提高了高达 30%。

应用启动时间性能是影响用户感知的重要指标,投入精力优化性能也能对业务产生显著影响。

“在 Zomato,提供和构建卓越的客户体验始终是我们理念的核心。我们相信性能是关键驱动因素之一,因此我们的团队致力于工程卓越,利用 Google 的开发者工具改进应用加载时间,并实时看到了显著成果。通过此,我们希望为印度的在线订餐需求提供一个超快的应用,并为我们未来的开发设定基准。”

— Sajal Gupta,Zomato 工程经理