ewtroan ([info]ewtroan) wrote,
@ 2007-11-02 17:02:00
Previous Entry  Add to memories!  Tell a Friend!  Next Entry
Faster is better

After watching my Delta flight pull away from the gate in JFK without me (Delta: thank you for letting me watch the door close on my international flight because you got me there more than three hours late and couldn't hold the connection 90 seconds for me) I wound up with a free week in Raleigh. I mean free. I had one eight minute meeting all week.

So, what did I do with all of this time? Primarily, I got to work on code. Gafton came down to Raleigh for the tail end of the week, so on Thursday we huddled and did more code. The results? The Conary 2.0 tree is now faster. Dramatically faster. For instance, a simple glibc clone has dropped from 90s to 30s (yes, a 200% improvement). Group commit operations were sped up by 75%. Table sizes in the database were reduced (which should help the "looking up pathIds" slowness). Shadows times were sliced by about half.

What did we do? Lots of stuff.

  • Turns out that Conary didn't represent unchanged files properly. Fixing this in a backwards compatible way was a bit of a hack, but doing it avoided a ton of file stream merging on commits.
  • We didn't use bulk loads in postgres, which led to *lots* of round trips. Gafton opened up that API for us.
  • Committing absolute changesets for shadows and promotes led to a lot of unnecessary work. Fixed that.
  • Promote was getting individual files (lots at a time, but still) so it now gets changesets when that looks like a better choice.
  • Promote was recompressing file contents. No good reason for it other than our not having the right API's in place to avoid it.

I'm sure I missed stuff, but the bottom line is we're feeling pretty motivated to get Conary 2.0 out the door!




Create an Account
Forgot your login?
Login w/ OpenID
English • Español • Deutsch • Русский…