findrenames: speedup exact match
authorBenoit Boissinot <benoit.boissinot@ens-lyon.org>
Tue, 24 Nov 2009 18:21:47 +0100
changeset 9927 2ae4d0865629
parent 9926 4b044b81cb54
child 9928 a92539567ef3
findrenames: speedup exact match benchmarked on crew repo with: rm -rf * ; hg up -C ; for i in `find . -name "*.py"` ; do mv $i $i.new;done followed by: hg addremove -s 100 before: Time: real 28.890 secs (user 26.920+0.000 sys 1.450+0.000) after : Time: real 6.790 secs (user 5.310+0.000 sys 1.350+0.000)
mercurial/cmdutil.py
--- a/mercurial/cmdutil.py	Tue Nov 24 17:39:42 2009 +0100
+++ b/mercurial/cmdutil.py	Tue Nov 24 18:21:47 2009 +0100
@@ -276,11 +276,15 @@
         if r not in ctx:
             continue
         fctx = ctx.filectx(r)
-        orig = fctx.data()
 
         def score(text):
             if not len(text):
                 return 0.0
+            if not fctx.cmp(text):
+                return 1.0
+            if threshold == 1.0:
+                return 0.0
+            orig = fctx.data()
             # bdiff.blocks() returns blocks of matching lines
             # count the number of bytes in each
             equal = 0