/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to bzrlib/xml_serializer.py

  • Committer: John Arbash Meinel
  • Date: 2010-08-04 07:14:54 UTC
  • mto: This revision was merged to the branch mainline in revision 5390.
  • Revision ID: john@arbash-meinel.com-20100804071454-bfhbwrqes7sabvay
Populate the offsets array.

This cuts down the number of bisections dramatically, basically by pre-caching
the first step. On real-world data it drops the steps from 587 to 156.
Or from 4.9/key to 1.3/key.
This drops the time to lookup from 23.7us to 20.3us.
Note that (k in dict) is 12.2us. I do wish we were just a bit closer to that.
However, with _LeafNode inherited from dict, I get 26us, so
maybe there is something in the interpreter that does a PyDict_CheckExact
call, and there isn't much we can do about it.

Show diffs side-by-side

added added

removed removed

Lines of Context:
83
83
 
84
84
    def read_inventory(self, f, revision_id=None):
85
85
        try:
86
 
            return self._unpack_inventory(self._read_element(f),
87
 
                revision_id=None)
 
86
            try:
 
87
                return self._unpack_inventory(self._read_element(f),
 
88
                    revision_id=None)
 
89
            finally:
 
90
                f.close()
88
91
        except ParseError, e:
89
92
            raise errors.UnexpectedInventoryFormat(e)
90
93