将应用速度提升 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 效率低下。随着App Startup 库的引入,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 工程经理