# HG changeset patch # User Bryan O'Sullivan # Date 1449812035 28800 # Node ID d500341e4f552526590eac5d6d2ebb091d8a101b # Parent ee2d7b5daa8a7ba41c4d217ee352d709ea68f74e match: use re2 in readpatternfile if possible This has a small, but measurable, effect on performance if a pattern file is very large. In an artificial test with 200,000 lines of pattern data, using re2 reduced read time by 200 milliseconds. diff -r ee2d7b5daa8a -r d500341e4f55 mercurial/match.py --- a/mercurial/match.py Thu Dec 10 21:32:19 2015 -0800 +++ b/mercurial/match.py Thu Dec 10 21:33:55 2015 -0800 @@ -654,9 +654,11 @@ if "#" in line: global _commentre if not _commentre: - _commentre = re.compile(r'((^|[^\\])(\\\\)*)#.*') + _commentre = util.re.compile(r'((?:^|[^\\])(?:\\\\)*)#.*') # remove comments prefixed by an even number of escapes - line = _commentre.sub(r'\1', line) + m = _commentre.search(line) + if m: + line = line[:m.end(1)] # fixup properly escaped comments that survived the above line = line.replace("\\#", "#") line = line.rstrip()