Zomato 是一家印度跨国餐厅聚合与送餐公司,为印度 500 座城市的顾客提供服务。该公司拥有超过 4300 万活跃客户,每天平均订单数超过 150 万,是国内最受欢迎的订餐和送餐服务之一。这也意味着客户使用的设备不尽相同,网络可用性也不尽相同。除了快速交付之外,这也使得用户在应用中获享流畅、无缝的体验变得至关重要。
用户期望缩短应用打开时间和响应速度。改善此指标不仅会直接影响应用指标,还可以确保更多订单完成率,并支持 Zomato 的策略 - 将业务拓展到新市场,并在中低端设备上提供更出色的体验。这最终有助于 Zomato 赢得下一批十亿用户。随着用户沿着销售漏斗向前迈进,应用打开时间也会影响漏斗规模的增大。
Zomato 还因为专注于应用 Vitals 而获得了一些显著的提升。例如,将应用加载时间缩短 30% 后,第 1 天的客户留存率提高了约 90%!
面临的挑战
Zomato 的开发步伐非常快,并且专注于添加功能,尽管这对客户来说无疑是一大利器,因此他们需要优化其代码库和用户体验。在添加新功能的同时,Zomato 也希望保持与众不同的效果。由于多个 SDK 消耗的资源并非总是必需,因此有必要对代码库进行简化和合理化。
这一切都得益于 Zomato 将业务拓展到印度的 2 级和 3 级城市,这些地区的人们主要使用处理能力相对有限的中低端设备。引入这些设备后,该团队必须确保提供与更高级别设备相同的用户体验。
他们做了什么?
Zomato 使用简单的评分准则来分析他们的开销,看看哪种解决方案可以带来最高的投资回报,而不是开发团队付出的努力。根据该评分准则,该团队开始了为期 4 个月的优化和改进之旅。
第一步是查看系统跟踪数据以发现问题,进行基于时间的分析,并相应地排定优先级。Perfetto 是一款出色的工具,用于分析、分析和跟踪 Android 进程。Zomato 利用该工具跟踪在应用启动期间初始化的所有 SDK,并指出哪些 SDK 可以延迟移除或加载。
当务之急是要移除旧版 SDK 和未使用的第三方库,因为这项任务不费吹灰之力,而且增益很高。这种方法帮助 Zomato 节省了 20% 的应用启动时间。
许多第三方库使用 content provider 在应用启动时进行初始化,这会影响应用启动时间。Zomato 使用 Facebook SDK 进行登录,但用户也有其他登录选项,因此在启动时初始化 SDK 效率低下。随着 App Startup 库的引入,Zomato 仅在用户选择 Facebook 登录选项时加载 SDK。这帮助他们将启动时间缩短了约 6%!
下一步是缩短视图的膨胀时间,因为在像 Zomato 这样的复杂界面结构中,视图本身的渲染和膨胀可能需要很长时间。Viewstub 有助于提高效率,因为它允许创建视图,但除非需要,否则不会将其添加到视图层次结构中。View 桩比使用 View 更高效。即使视图处于 GONE 状态,它也会膨胀并消耗内存和 CPU 使用率。Zomato 在其登录 activity 中对视图层次结构进行了扁平化处理,并将布局与视图桩合并。这些更改使通货膨胀时间显著缩短了 7%。
Android Profiler 支持实时跟踪 CPU 活动、内存和网络,因此有助于优化内存使用情况。性能分析器使他们能够识别锁定情况和内存开销的根本问题,并进行相应的修复。Zomato 还研究了其缓存机制,实现了 60% 的内存不足问题。
操作 | 之前(秒) | 之后(秒) | 改进 |
---|---|---|---|
移除了旧版 SDK、未使用的第三方库 | 4,873 | 3,813 | 21.74% |
延迟加载库 | 3,814 | 3,577 | 6.2% |
布局改进,viewstub | 2,529 | 2,348 | 7.15% |
应用启动时间 = 应用初始化 + 库加载时间 + 查看膨胀时间
成果
Zomato 的业绩提升帮助他们打造了更顺畅的体验。进一步改进了界面和缓存,还减少了卡顿。
![](https://developer.android.google.cn/static/images/distribute/stories/zomato.png?authuser=5&hl=bg)
从应用到首页(点击应用图标后转到完全加载且可用的首页)是 Zomato 在内部跟踪的一项关键业务指标。在实施这些改进后,他们发现此指标显著上升。在此期间,到达完全加载网页的客户增加了约 20%。
这使得第 1 天的客户留存率提高了约 90%!这些改进还对其前向漏斗产生了微妙的影响:整体订单完成率(首页 -> 菜单 -> 购物车 -> 下单)提高了约 1.5 个百分点,即月环比约 60 万订单。
根据 Firebase 性能的冷启动指标,平均提升了 25%,对于中低端设备,应用的冷启动时间缩短幅度高达 30%。
应用启动时间性能是一项影响用户感知的重要指标,投入精力优化性能也会对业务产生重大影响。
“在 Zomato,提供和打造卓越的客户体验一直是我们意识形态的核心。我们认为性能是关键的推动因素之一,因此我们的团队力求实现卓越工程,利用 Google 的开发者工具缩短应用加载时间,并实时取得了显著成效。通过此方式,我们希望能够提供极速的应用来满足印度的在线订购需求,并为我们的未来发展设定了基准。”
- Sajal Gupta,Zomato 工程经理