encoding.lower: use fast ASCII lower
This benefits, among other things, the case collision auditor.
On a Linux system with a large real-world repo where all filenames are ASCII,
hg perfcca:
before: wall 0.260157 comb 0.270000 user 0.230000 sys 0.040000 (best of 38)
after: wall 0.164616 comb 0.160000 user 0.160000 sys 0.000000 (best of 54)
--- a/mercurial/encoding.py Fri Oct 03 18:42:39 2014 -0700
+++ b/mercurial/encoding.py Fri Oct 03 18:45:56 2014 -0700
@@ -270,8 +270,7 @@
def lower(s):
"best-effort encoding-aware case-folding of local string s"
try:
- s.decode('ascii') # throw exception for non-ASCII character
- return s.lower()
+ return asciilower(s)
except UnicodeDecodeError:
pass
try: