View Single Post
I'm piecing this together from a long chat thread with Ken, so apologies in advance if I get some of this wrong and he needs to correct me subsequently. :-)

Optimization: terminology is a bit mushy here. There are actually two pieces to optimization, which I'll describe below.

The first piece occurs at launch. We load all the transactions out of storage and into a database that's kept in RAM; that's what actually makes the app fast while you're using it. You can't actually use OmniFocus without doing this, and while you're using it it's always loaded into that optimized database.

However, scanning your transactions to place them in that fast database can get slow as transactions build up. The second type of optimization deals with that; we compact the XML transactions so that we can scan them more quickly. This part happens automatically any time we sync; we just don't show a specific "optimizing database" progress bar.

Folks that aren't syncing can force this second type of optimization to occur by tapping a button. Note the emphasis there - if you're syncing, that button gives you no additional benefit, and can, in fact, interfere with syncing. That's why it's disabled. :-)

Upshot here: the optimization really only affects app launch time. If you're syncing, a lot of it is still happening on a continuous basis, and the rest will be taken care of next time the app launches. iOS 4 reduces the need to launch apps, but it doesn't eliminate it. The OS will kill apps in the background if it needs more resources, and if the phone ever reboots, all the apps start from scratch the next time they're launched.