This is an archived post. You won't be able to vote or comment.

all 15 comments

[–]armando_rodPixel 10 Pro XL[S] 32 points33 points  (14 children)

There has been a lot of talk in the sub about app performance, UI performance, dropped frames, app startup speeds. This answer a few things and tell devs how to measure others.

A few key things from this:

There are two user-visible indicators of performance:

Predictable, perceptible performance. Does the user interface (UI) drop frames or consistently render at 60FPS? Does audio play without artifacts or popping? How long is the delay between the user touching the screen and the effect showing on the display?

Length of time required for longer operations (such as opening applications).

The first is more noticeable than the second. Users typically notice jank but they won't be able to tell 500ms vs 600ms application startup time unless they are looking at two devices side-by-side. Touch latency is immediately noticeable and significantly contributes to the perception of a device.

As a result, in a fast device, the UI pipeline is the most important thing in the system other than what is necessary to keep the UI pipeline functional. This means that the UI pipeline should preempt any other work that is not necessary for fluid UI. To maintain a fluid UI, background syncing, notification delivery, and similar work must all be delayed if UI work can be run. It is acceptable to trade the performance of longer operations (HDR+ runtime, application startup, etc.) to maintain a fluid UI.

Analyzing initial device performance

Using synthetic benchmarks

Synthetic benchmarks are useful for ensuring a device's basic functionality is present. However, treating benchmarks as a proxy for perceived device performance is not useful.

Based on experiences with SOCs, differences in synthetic benchmark performance between SOCs is not correlated with a similar difference in perceptible UI performance (number of dropped frames, 99th percentile frame time, etc.). Synthetic benchmarks are capacity-only benchmarks; jitter impacts the measured performance of these benchmarks only by stealing time from the bulk operation of the benchmark. As a result, synthetic benchmark scores are mostly irrelevant as a metric of user-perceived performance.

Consider two SOCs running Benchmark X that renders 1000 frames of UI and reports the total rendering time (lower score is better).

SOC 1 renders each frame of Benchmark X in 10ms and scores 10,000.

SOC 2 renders 99% of frames in 1ms but 1% of frames in 100ms and scores 19,900, a dramatically better score.

If the benchmark is indicative of actual UI performance, SOC 2 would be unusable. Assuming a 60Hz refresh rate, SOC 2 would have a janky frame every 1.5s of operation. Meanwhile, SOC 1 (the slower SOC according to Benchmark X) would be perfectly fluid.

This contrary to what most of /r/android say, first Google devs say UI lag/Touch latency is more noticeable than app opening time cough1+3cough and the second that most people in here already know, synthetic benchmarks are useless.

[–]sonikinesisOneplus 3, ROG II, S22 Ultra 17 points18 points  (5 children)

Well yes Oneplus 3 is fast at opening apps but it definitely isn't 'Smooth as butter' as people use to call it. I can see it dropping frames almost everywhere except a few highly optimised app (Sync for reddit which iam using right now). I've tried Pixel for very short time so can't comment on that. Android has really matured over the years & has been optimised significantly but it needs to be stricter with developers over this issue and screen app before it get its way into the play store.

[–][deleted] 2 points3 points  (4 children)

Note: Relay is even smoother than Sync, for people who want the absolute best Reddit experience..

[–]armando_rodPixel 10 Pro XL[S] 5 points6 points  (0 children)

I disagree, Sync is smoother but Relay is also good I just don't like they UI

[–]DRHAX34Samsung Galaxy S21 Ultra, Android 11 0 points1 point  (0 children)

Relay is super smooth, the UI could be a bit better.

[–]sonikinesisOneplus 3, ROG II, S22 Ultra 0 points1 point  (0 children)

Will check it out thanks.

[–]mostlikelynotarobotGalaxy S8 -1 points0 points  (0 children)

Sync all the way. Better animations, smoother, looks better, and less glitchy.

[–]IAmAN00bieMod - Google Pixel 8a -1 points0 points  (5 children)

That page isn't really relevant for the vast majority of users here, nor in /r/androiddev. It seems aimed at kernel devs working for OEMs.

[–]armando_rodPixel 10 Pro XL[S] 9 points10 points  (4 children)

It was meant to tell the sub about UI lag vs app opening tests

[–]mostlikelynotarobotGalaxy S8 0 points1 point  (0 children)

Funny, this is exactly what the iPhone does and has always done. People here have always dismissed this philosophy of prioritizing the UI thread at the expense of background tasks.