/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/knit.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:
68
68
    index as _mod_index,
69
69
    lru_cache,
70
70
    pack,
 
71
    patiencediff,
71
72
    progress,
72
73
    static_tuple,
73
74
    trace,
79
80
from bzrlib import (
80
81
    errors,
81
82
    osutils,
82
 
    patiencediff,
83
83
    )
84
84
from bzrlib.errors import (
85
85
    FileExists,
3417
3417
            raise exc_class, exc_value, exc_traceback
3418
3418
 
3419
3419
 
3420
 
# Deprecated, use PatienceSequenceMatcher instead
3421
 
KnitSequenceMatcher = patiencediff.PatienceSequenceMatcher
3422
 
 
3423
 
 
3424
3420
def annotate_knit(knit, revision_id):
3425
3421
    """Annotate a knit with no cached annotations.
3426
3422