Always running, or at least running fast

There's something very compelling about writing a little script and putting it online. Because even if someone comes by once every three days and tries it out, there it is! Online always. Software like this is alive in a way that a binary on a PC is not.

It's been fun shipping our f.lux app to the desktop, because it's always on, and even though it does just a small thing, doing that thing without using a lot of resources, and running all the time is sort of neat.

Running all the time hasn't been true of the "app" on the desktop or device. Since we've historically tried to save RAM, launch times have remained inconvenient and excessive. Excel now takes 30 seconds. Visual Studio can take a minute. Photoshop, forever. Sure, we have these annoying tray icon apps with their inconvenient UIs, but the PC is getting slower for doing real work.

Dropbox is always on, and instantly useful. Gmail and Facebook are very fast, because they're already "loaded" into a server somewhere.

Excel XP from ten years ago launches in a half second. This year, Excel takes 30 seconds.

I'm not sure if Apple's quest, with OSX Lion, to ignore whether or not apps have launched yet is the right approach. Apple now hides the little "light" under each icon that says if an app is running, and it tries to restore some application state on reboot. This is good, but it's still too slow.

xCode now takes forever to launch, and so does iTunes. Launch times are getting worse, in a world where that really makes no sense. People's tolerance for 30 second launches is lower, since they're used to mobile OSes, which are fast because the apps are simpler. And people seem to be more distractible: when iTunes takes 30 seconds to launch, most people will have forgotten the song they wanted to hear and will have checked their Facebook messages instead.

You can't ignore the engineering around making launch times small, and complexity makes for sloppiness. A launch that takes a full second is noticeable, and probably most apps should strive for 500ms, at the most. 30 seconds is completely absurd and negligent.

Superfetch, Readyboost, etc., all aren't good enough. Important stuff needs to be loaded into RAM. How do we launch in one seek, rather than 10,000? SSD can't fix everything.

This problem, making apps launch fast, is 100 times as important as making Windows boot fast, and it's 100 times as complex. Hope the next versions of the OSes get to fix this, or application writers start paying attention to it.

Apps should launch instantly, and more real services (not launcher icons) should be loaded automatically, so the launch isn't there at all.

The perception of productivity on the desktop will wane quickly if this particular bloaty trend isn't fixed.

3 comments:

  1. ...Photoshop, forever.

    Um, hello? Around CS3 the Photoshop team got religion about cutting launch time, and since then they continuously monitor it as part of the development process.

    I just timed launching Photoshop CS5 on my MacBook Air running OSX 10.7. A cold launch (after a fresh Mac OS reboot) is about six seconds; subsequent launches are less than four. Admittedly, that's below your 500ms goal, but it's a lot less than "forever."

    ReplyDelete
  2. Macbook Air usually means SSD? Is it a cold boot?

    Using my 3GHz PC with a regular hard disk, a cold boot to CS3 takes about 35 seconds. (Fonts? Plugins?) CS5 takes just under 30. iMac (warm!) takes about 25 seconds for CS5.

    Photoshop is actually quite fast to launch the second time (<5 seconds!), but that's not how I usually launch it.

    More info for Windows:
    - the "CreateFile" system call is invoked 8007 times to launch CS3, including opening each font twice.
    - Under CS5, that's reduced to 4437 times.

    Remember that some anti-virus software *hooks* every call to this API, making this kind of thing very dangerously slow. Also, my NTFS has access times turned off, or opening 8000 files to launch would be slower than that.

    Alternately: CS3 reads 120MB from disk to launch, and CS5 only reads 10MB! Huge improvement, I agree.

    Guess I need a way to pre-cache Photoshop on startup, because the warm launch is really nice, but otherwise it's too slow.

    ReplyDelete
  3. The ~6 second launch time was a "cold launch" (i.e. right after re-starting Mac OS X). Yes, the MacBook Air does use an SSD.

    You ought to sell one of your PC's three "Ghz" and use the proceeds towards buying an SSD. They aren't a magic bullet for everything, but launching apps tends to be "lots of small random read" I/O, and SSDs are much faster than hard drives for that. You'll find a lot of your frustration with app launch time goes away. Excell launches in about seven seconds cold (four warm) on the MacBook Air.

    Your real problem isn't software. It's a mass storage device that's three orders of magnitude slower than the rest of the system.

    ReplyDelete