4

We've build quite a 'large' and regrettably slow windows application for various financial planning business steps.

I'm currently trying to improve the performance of the application by slowly shaving off percentage after percentage of wait time. However there still is a lot of wait time left in the application.

Question What are the best ways to improve the perceived performance? (in a generally slow application)

Examples:

If the user closes the application we currently save some data and close the application window after saving the data. Would it be better to make the application visible with the possibility of showing an error window after a second or so?

Is it an advantage to immediately show a wait cursor after a user starts some interaction or should we do something else (block UI, show wait animation?) and can you supply me with a reference so I can get management to agree?

4
  • Do you mean "make the application invisible during the process"? I suppose minimizing it at least is the way to go (allows your users to start other tasks if needed).
    – Rom1
    Aug 19, 2011 at 10:04
  • There is no way the application can be maximised after the user closes the application. But yes I meant made invisible including the removal of the application icon in the taskbar.
    – Barfieldmv
    Aug 19, 2011 at 10:16
  • Why would you want to remove the application icon from the taskbar? It does not take much space, does not prevent the user from doing something else, but stays as a useful reminder that 'not everything is done yet, and I might pop an error message if something bad happens'.
    – Rom1
    Aug 19, 2011 at 13:05
  • Most of our user don't understand the taskbar. I don't expect them to understand that an icon's on the taskbar can belongto an invisible application and I guess they'll expect the application to open once they click it.
    – Barfieldmv
    Aug 19, 2011 at 13:29

6 Answers 6

4

If "Lots and lots of small and big things are slow", then I don't think any amount of animation will improve their experience significantly to be honest.

From the wording of your question, I'm assuming the developers are the same people who are going to work on these UI improvements. If that is the case, you are better off spending your time on the actual code improvements at least until you have a clearer list of the re-code needed. If you can't clearly identify, prioritize and schedule your overhauling work, all these UI improvements are just a waste of time.

I develop business applications too so I know how crappy code rework is but you sometimes just have to grind through it. Procrastinating now often means it won't ever be done :P

The idea about hiding the window and running the processing in the background is also very risky. They will probably assume the transaction/processing is done and leave the workstation once they see the application close.

If that happens and they miss a vital error message, there could be hell to pay.....

3

Well there's one way perceived performance can be drastically improved. Whenever you reach a point where data is being saved or retrieved and you're making the user wait, then go ahead and show them the next screen during that operation. You'd need a "Loading..." overlay making that screen readonly until it's done.

For example, the "next" screen could be the details of an account. You can show that screen immediately with all the fields blank. Then display that "Loading..." overlay as you load the data asynchronously.

The reason for doing this is simple. If the user is able to see what they're going to interact with next, then they'll be ready as soon as it's available to be used. Any time a long-running task results in a new set of information being displayed, you can employ this technique to optimize the user's workflow.

2
  • Do you have any links/references for the information given. It seems pretty self explanatory but I'll need some management support for the needed time allocation.
    – Barfieldmv
    Aug 22, 2011 at 19:56
  • 1
    @Barfieldmv - No I don't. This is just something I've learned from my own experiences using and building applications. Aug 22, 2011 at 20:52
2

I think, you first need to find out what is slow and what appears as slow to the user. This can be the user interface at all, but it also can be only a few tasks. The solution depends the slow part of the application.

Regarding "show wait animation": I would avoid this and rather try to show some reasonable progress.

1
  • Lots and lots of small and big things are slow. Fixing all of them is a huge thing to do(complexity and time) adding more progress and wait animations should give a more fluid user experience.
    – Barfieldmv
    Aug 19, 2011 at 13:28
2

If you can cache information in the start up, which makes the application slower to start up but faster once running is better.

No animation will make something 'perceivably' faster. Progress bars are more useful than simple animations. Things that take a long time in Windows such as copying massive files normally combine progress bars and animations.

From Jacob Neilsen's blog on response times:

  • 0.1 seconds gives the feeling of instantaneous response — that is, the outcome feels like it was caused by the user, not the computer. This level of responsiveness is essential to support the feeling of direct manipulation (direct manipulation is one of the key GUI techniques to increase user engagement and control — for more about it, see our Principles of Interface Design seminar).
  • 1 second keeps the user's flow of thought seamless. Users can sense a delay, and thus know the computer is generating the outcome, but they still feel in control of the overall experience and that they're moving freely rather than waiting on the computer. This degree of responsiveness is needed for good navigation.
  • 10 seconds keeps the user's attention. From 1–10 seconds, users definitely feel at the mercy of the computer and wish it was faster, but they can handle it. After 10 seconds, they start thinking about other things, making it harder to get their brains back on track once the computer finally does respond.

So I suggest that you tell management you need to get the response times under 10 seconds.

3
  • I'm actually going to add lots of <0.1 second reaction times for those 'waiting' cursors to pop up after button presses etc. So the user knows something is happening. Then I'll start reducing the popup speed for dialogues to about 1-2 seconds and make a list of >10 seconds jobs that should have fluent feedback about what's happening.
    – Barfieldmv
    Aug 21, 2011 at 8:34
  • "No animation will make something 'perceivably' faster." - This isn't entirely true. Loading animations (even indeterminate ones) show that something is loading. Without them the user will often assume the app has hung, is extremely slow, or perhaps, doubting themselves, they'll just press the button again. Aug 21, 2011 at 20:29
  • I agree with you it is important, but its not perceivably faster. People will still perceive it as slow but they are prepared to wait longer.
    – icc97
    Aug 27, 2011 at 11:55
2

Something practical could be to break the long running tasks into smaller "chunks" - if this is feasible of course. Then you can update the UI after each "chunk" has been processed.

Taking an example from image processing you can give the user feedback that something is happening by updating each line of the image as it's generated (say) filling the image in from the top down, or show each step of a progressive deblurring algorithm so the image gets continually sharper and sharper.

So for your financial data you could show each day/week's figures as they are processed perhaps.

While the overall time of the operation doesn't change the user perceives it to be quicker as they're not waiting for all of the data to appear before they can carry on with their work. They can be reviewing and analysing the data "so far".

It also gives them confidence that the process is going to finish some time soon.

1

This question made me recall a usability testing report I read years ago, can't remember where, maybe something by Jakob Nielsen. The study was a comparison between several competing sites. Some had better usability then others.
At the end of the sessions the users were asked questions, and among them they were required to rate the response time of the site.
The interesting part is that the users consistently rated fast the sites with better usability, despite the fact that the chronometer was telling a different story.

The moral is that good usability increases the speed perception of the users, perhaps because they feel that they are moving forward all the time and forgive the waitings.

On the other hand, there is no performance issue that time won't heal. The next computer is faster than the one available today.

So you might want to apply part of the resources to enhance usability and let Moore's law solve part of the lack of speed.

2
  • Ales, there is no Moore's law for crappy coding. Lots of (single threaded)software is very Mhz dependant and that's one of the area's where speed increases have been very limited.
    – Barfieldmv
    Sep 17, 2012 at 11:26
  • Yes, you are right in the single-threaded thing. Anyway, that is not the core fo my post. What I'm communicating is that usability enhancements somehow count as performance enhancements. The user must have a feeling of continuous progress. Like, for example, before each long wait tell them what's going to happen next (or they already know?).
    – Juan Lanus
    Sep 17, 2012 at 17:26

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.