# HG changeset patch # User Dan Villiom Podlaski Christiansen # Date 1304168736 -7200 # Node ID 14fac6c0536adcff0c665691863f19f9f9afca05 # Parent 8f7132fa5e599ae75ebe62394a07825202a991c7 pure bdiff: don't use a generator Generators are slow, and currently defeat the PyPy JIT. diff -r 8f7132fa5e59 -r 14fac6c0536a mercurial/pure/bdiff.py --- a/mercurial/pure/bdiff.py Sat Apr 30 15:05:34 2011 +0200 +++ b/mercurial/pure/bdiff.py Sat Apr 30 15:05:36 2011 +0200 @@ -19,6 +19,7 @@ def _normalizeblocks(a, b, blocks): prev = None + r = [] for curr in blocks: if prev is None: prev = curr @@ -40,9 +41,10 @@ while (b1end + shift < b2end and a[a1end + shift] == b[b1end + shift]): shift += 1 - yield a1, b1, l1 + shift + r.append((a1, b1, l1 + shift)) prev = a2 + shift, b2 + shift, l2 - shift - yield prev + r.append(prev) + return r def bdiff(a, b): a = str(a).splitlines(True)