Yelp Tyler Argo May 2, 2018

Android Search Performance Improvements (Part 1)

Article Summary

Yelp users were literally grunting while waiting for search results to load. That's when the Android team knew they had a performance problem.

Yelp's Android team tackled search performance by breaking it into two categories: perceived search performance (time to first result) and scroll performance (maintaining 60fps). This first part of their series focuses on establishing baseline metrics before optimization.

Key Takeaways

Critical Insight

By measuring the right metrics across device generations, Yelp cut search rendering time nearly in half and identified that a third of scroll frames were janky.

The measurement framework is just step one of their four part improvement lifecycle, with the actual optimization techniques coming in part two.

About This Article

Problem

Yelp's Android search results took 350ms to render at the median. Users at the 90th percentile saw delays of 656ms, caused by client-side processing bottlenecks rather than network issues.

Solution

Tyler Argo's team built a performance improvement process using the Measure-Improve-Monitor-Repeat framework. They used Splunk metrics to find where time was being spent on the client by comparing search_request duration against search_results_loaded timing.

Impact

Client-side rendering dropped to 190ms at p50 and 394ms at p90. Scroll performance improved too, going from 33% dropped frames to a smooth 60fps across different devices.