Apps Performance, why it matters, how to improve it

Registered by Florian Boucault on 2013-11-06

Discuss the performance of apps: rendering time, memory footprint, responsiveness, etc.
Why does it matter?
What are the stakes?
How to measure it?
How to fix it?
How to keep it good?

Blueprint information

Status:
Not started
Approver:
Pat McGowan
Priority:
Undefined
Drafter:
Florian Boucault
Direction:
Needs approval
Assignee:
None
Definition:
Approved
Series goal:
Accepted for trusty
Implementation:
Unknown
Milestone target:
milestone icon ubuntu-14.04

Related branches

Sprints

Whiteboard

App performance presentation:
https://docs.google.com/a/canonical.com/presentation/d/15Gc9MKTQnhUcXtL9GrBdv8va6o8ZfPy_DelfTspbucs/edit#slide=id.g1f5d2c1c_0_62

QML performance analyzer
http://qt-project.org/doc/qtcreator-2.8/creator-qml-performance-monitor.html

Areas to explore:
- built in ActivityIndicator progress indicator when using UbuntuShape with asyn image being loaded
- some sort of feedback when pressing button so user knows they've clicked it and action being executed
  ↑ to me, this is the responsibility of the developer. However, the framework should indicate when there's a synchronous action running on a UI Thread (i.e. if you know something runs long, show a spinner. If that wasn't expected though or you handle it incorrectly as a dev and it should have been asynchronous, the framework should indicate "you see, this color/whatever feedback indicates there's something still running")

- possible feedback for apps which stopped responding
- add app launch time to the logs?
- dev tools: FPS, touches, view outlines, etc

(?)

Work Items

Work items:
[bfiller] Perform an analysis of app startup time: INPROGRESS
[fboucault] Ask design on how to present feedback for long-time operations: TODO
[fboucault] Find out how rendering is performed in the emulator: DONE
[saviq] determine cause of slowdown when multiple apps have been lauched: TODO
[coreygoldberg] apply to autopilot tests spit out rendering time by setting env vars (#millsecs per frame): TODO

Dependency tree

* Blueprints in grey have been implemented.