Saturday, May 24, 2008

Improve Apparent Application Performance Through UI

Have you ever felt that your application feels heavy or takes a lot of time to load? Do your users and customers expect "Improved performance" in the what's new list with every release? Does your manager feel you've been sleeping when he asked for performance improvement? Don't worry... this post is will provide hints on how to improve performance by making the user feel that the application is smoother and faster.

As developers, we generally tend to look under-the-hood to improve performance. A better algorithm, lesser memory leaks, better caching etc... is what we think when we wish to improve performance. But with just some simple user-interface (UI) tweaks, we can do wonders. Its not that the above improvements don't work. Its always better to optimize things under-the-hood, but a often simpler and faster way to speed up the feel of your application is at the UI-level.

To give you a few examples of widely used applications, Windows Vista SP1 is supposed to have improved file-transfer performance. One of the improvements was to improve the UI and it really proved useful to convince the user of a better performance. For web applications the use of AJAX improves perceived performance. Although whole page refresh takes longer and AJAX will help load only certain page elements, the implications of use of AJAX is more than that. Most of the times, even if AJAX takes longer to process a server request, we can have asynchronous smaller updates to a webpage and since the user saw some change on the page, it makes the user feel that the operation is happening faster, although in reality its gotten slower.

To point out another example, which I observed 3 days back was with the gmail's new loading screen. Gmail seems to advertise improved performance with the latest release, but I've observed that the loading time has actually increased. But since they added a new loading screen with a progress bar (screenshot below), it feels faster than previous loading times.


From those example we come to understand that perceived performance can be improved by:

  1. Smoother ending to a loading screen makes the user feel that the loading finished faster.
  2. Quick start to a loading process feels like faster performance
  3. Smaller but quicker changes improve perceived performance
  4. Shortening transition animations makes user feel that performance has improved.


Steve Ballmer said...

Keep up the good work here kid!

Anonymous said...

Actually, 'perceived Performance' means 'faked Performance'. This thing has gone long way with showing hourglasses, turning hourglasses, progress bars, progress bars with a percentage or some other information and so on.

And it has grown worse in any incarnation.

Saptarshi Purkayastha said...

@anon-comment#2: Although you say that it has grown worse with every incarnation, you have to understand that it is a requirement... We build software so that people can use it and when using it be happy... Faked performance is one way to make the user happy!!