~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/patiencediff.py

Optimize common case where unique_lcs returns a set of lines all in a row

Show diffs side-by-side

added added

removed removed

Lines of Context:
135
135
        blo += 1
136
136
    if alo == ahi or blo == bhi:
137
137
        return
 
138
    last_a_pos = -1
 
139
    last_b_pos = -1
138
140
    for apos, bpos in unique_lcs(a[alo:ahi], b[blo:bhi]):
139
141
        # recurse between lines which are unique in each file and match
140
142
        apos += alo
141
143
        bpos += blo
142
 
        recurse_matches(a, b, apos, bpos, answer, maxrecursion - 1)
 
144
        # Most of the time, you will have a sequence of similar entries
 
145
        if last_a_pos+1 != apos or last_b_pos+1 != bpos:
 
146
            recurse_matches(a, b, apos, bpos, answer, maxrecursion - 1)
 
147
        last_a_pos = apos
 
148
        last_b_pos = bpos
143
149
        answer.append((apos, bpos))
144
150
    if len(answer) > oldlength:
145
151
        # find matches between the last match and the end