
Rethinking the Progress Bar - nreece
http://hamletdarcy.blogspot.com/2008/04/rethinking-progress-bar.html
======
Hexstream
There's this one idea I've had for some time for progress bars. Say you have a
progress bar for a lengthy operation (duh). For example, the progress bar for
loading a certain level in a certain game. On successive loadings of the same
level on the same machine, the "signature" of the loading should be the same.
So you could cache how much time it takes on the first time you load, and on
subsequent loads you hope the loading will have the same behavior and make the
progress bar grow smoothly, proportional to the time it takes.

That was the simplest scheme, you can go much further. You could separate the
loading in chunks (say, 20 chucks of 5%) and see how much time each chunk
takes (you get the ratio displayed progress/actual progress). On the next
loading, if a chunk takes more time than the last time then you adjust the
rest of the indication of progress appropriately to compensate.

Even better, instead of only considering the last loading you could develop a
statistical model over many loadings of what is likely to vary and by how
much. Maybe you could even take the system's load average (as provided by the
OS) into consideration.

I think this guessing scheme, though failure-prone, would make progress bars
much more accurate for common scenarios. It would be better than just
accepting that most progress bars will be broken and inaccurate like we do
right now...

~~~
bayareaguy
I've always thought applications which need progress bars should ask you if
you would be willing to share your progress data in exchange for seeing how
your progress compares to that of other users. Not only would this allow you
to get much more accurate estimates, it could also tip you off to potential
issues. If others are getting past the progress stage a lot faster than you
then it could mean it's time for you to investigate what's going on. Perhaps
everyone else using that application has a better system than you or perhaps
it's time for you to optimize your system a bit.

