Quote:
Originally Posted by Brian
Keep in mind that Ken may hop on here and correct everything I'm about to say. :-)
|
Well, just one minor correction…
The issue I was talking about has to do with how many new changes were just synced, and affects both the Mac and iPhone versions (but the Mac is so much faster that it's less commonly noticed there).
The test case I have is from a review I did last weekend on my iPhone and laptop, and I identified the problem because when I synced those 192 changes back to my Mac Pro it took 20+ seconds to sync: long enough that I was able to use Activity Monitor to grab a sample of the process and track down the problematic portion of the code.
I took a snapshot of the sync database to use as a test case, and found that (ignoring sync transfer times from the WebDAV server) it took my iPod touch over eight minutes to process and save those 192 changes. Tim and I worked out an approach which lets us process and save those changes all at once, and we've managed to reduce that processing time down to 30 seconds.
But we're not ready to ship this performance update just yet, because a change this big requires a lot of testing: it's great to have faster sync times, but only if the results are consistent and correct!
I've been running the optimization through its paces against several sample databases, then testing a debug build on my iPhone for the past few days. I found an issue with out-of-order cascading deletes (I'd moved some actions out of a group, then deleted the group, then made more updates to those actions—and consolidating those action updates meant the delete happened first, deleting the actions before they were updated), but since then the only problems I've found are some spurious conflict warnings caused by consolidating updates with inserts without changing the operation type back to insert (now fixed). I think it's about ready to unleash on the rest of Omni, and if that testing goes well we'll start testing it in sneaky peek builds.