On 22 Apr 2009, at 17:06, Chris Williams wrote:

So you'd rather the user sits there wondering if this huge, highly complex application (like any Office or Adobe app) that takes 10-15 seconds to load, even longer on a slow laptop, is actually starting up, or should I click it
again, or is my computer dead, or "what the heck is going on here"...?

If you think Office or any of Adobe's apps really have a good excuse for that behaviour, I'm afraid you're sorely mistaken. The problem they're trying to solve is well-known, and has been solved for *years* in some other bits of software. Since we're talking huge apps, a reasonable comparison might be Emacs, which, if it tried to load everything individually like Adobe's apps appear to, would probably take even longer to load. Yet it appears almost instantaneously. (Yes, I know, I know, that's because of a horrible unexec() hack, at least on most platforms, though IIRC the OS X implementation is a little cleaner than average.)

Another large example is OS X itself; it does an Emacs-like trick with device drivers, loading them all in one lump from a cache file whenever possible.

I suppose both Adobe and Microsoft would retort that they have a lot of historic baggage and that re-implementing the start-up code isn't high priority for them. Maybe even that there genuinely are things they need to do that really do take time and can't be avoided (though I'm doubtful). I'm only picking on their apps because you mentioned them, and they're easy targets :-)

Splash screens serve a purpose other than advertising. No program I know of
actually delays the load to show the splash screen.

The point is that most of what they do at load time can usually either be avoided entirely, optimized somehow or deferred until it's really necessary.

I have an application that connects to a SQL server. The app itself isn't a slow loader, but the connection to the SQL server (often on another computer or on hard drives that may be asleep) can take 5, 10, or more seconds to establish. The splash screen shows that progress and let's the user know
what things are being done.  Far better than a spinning beach ball.

But much better to display the app's main UI and then use the app's usual progress indication mechanism. And then, ideally, to make any parts of the UI that *can* start working work as soon as possible.

Of course, we're generalising here, and there is a fine line between having a splash screen and having a window that opens that says that you're just connecting to your server or fetching essential data.

Incidentally, since you're talking about a database app, it's worth contemplating whether there is anything that you don't really need to fetch straight away; you *might* find that you don't even need to load any data up front, but just need to do some queries to establish the structure of the data that you're going to have to load. I'm sure you've thought of all of this already wish such a large volume of data, but even if that's true then it might be a useful pointer for someone else reading this e-mail.

Anyway, this is getting kind of off-topic, but hopefully it's a useful post anyway.

Kind regards,

Alastair.

--
http://alastairs-place.net



_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to