Patchwork [4,of,5,V2] normcase: for darwin, use fast ASCII lower

login
register
mail settings
Submitter Siddharth Agarwal
Date Oct. 4, 2014, 7:01 p.m.
Message ID <c83e9a5d2dc56c0a0a48.1412449294@devbig136.prn2.facebook.com>
Download mbox | patch
Permalink /patch/6118/
State Accepted
Commit 70624fda193d022ed85a88c26177137c1d807a8b
Headers show

Comments

Siddharth Agarwal - Oct. 4, 2014, 7:01 p.m.
# HG changeset patch
# User Siddharth Agarwal <sid0@fb.com>
# Date 1412387248 25200
#      Fri Oct 03 18:47:28 2014 -0700
# Node ID c83e9a5d2dc56c0a0a48d84af2aefc67518d8e9f
# Parent  86352345087272e47c716bd9f797938837a87d72
normcase: for darwin, use fast ASCII lower

Constructing the foldmap is much faster on OS X now. For a large real-world
repo, hg perfdirstatefoldmap:

before: wall 0.805278 comb 0.800000 user 0.790000 sys 0.010000 (best of 13)
after:  wall 0.399708 comb 0.410000 user 0.390000 sys 0.020000 (best of 25)

This is a nice boost to 'hg status', especially with the third-party hgwatchman
extension enabled (which eliminates stat calls). For the above repo, 'hg
status' goes from 1.17 seconds to 0.74.

Patch

diff --git a/mercurial/posix.py b/mercurial/posix.py
--- a/mercurial/posix.py
+++ b/mercurial/posix.py
@@ -217,8 +217,7 @@ 
         '''
 
         try:
-            path.decode('ascii') # throw exception for non-ASCII character
-            return path.lower()
+            return encoding.asciilower(path)  # exception for non-ASCII
         except UnicodeDecodeError:
             pass
         try: