Mercurial > hg
view tests/test-bdiff.py.out @ 16943:8d08a28aa63e
matcher: use re2 bindings if available
There are two sets of Python re2 bindings available on the internet;
this code works with both.
Using re2 can greatly improve "hg status" performance when a .hgignore
file becomes even modestly complex.
Example: "hg status" on a clean tree with 134K files, where "hg
debugignore" reports a regexp 4256 bytes in size.
no .hgignore: 1.76 sec
Python re: 2.79
re2: 1.82
The overhead of regexp matching drops from 1.03 seconds with stock
re to 0.06 with re2.
(For comparison, a git repo with the same contents and .gitignore
file runs "git status -s" in 1.71 seconds, i.e. only slightly faster
than hg with re2.)
author | Bryan O'Sullivan <bryano@fb.com> |
---|---|
date | Fri, 01 Jun 2012 15:26:20 -0700 |
parents | eeac5e179243 |
children | 9a8363d23419 |
line wrap: on
line source
*** 'a\nc\n\n\n\n' 'a\nb\n\n\n' *** 'a\nb\nc\n' 'a\nc\n' *** '' '' *** 'a\nb\nc' 'a\nb\nc' *** 'a\nb\nc\nd\n' 'a\nd\n' *** 'a\nb\nc\nd\n' 'a\nc\ne\n' *** 'a\nb\nc\n' 'a\nc\n' *** 'a\n' 'c\na\nb\n' *** 'a\n' '' *** 'a\n' 'b\nc\n' *** 'a\n' 'c\na\n' *** '' 'adjfkjdjksdhfksj' *** '' 'ab' *** '' 'abc' *** 'a' 'a' *** 'ab' 'ab' *** 'abc' 'abc' *** 'a\n' 'a\n' *** 'a\nb' 'a\nb' 6 6 'y\n\n' 6 6 'y\n\n' 9 9 'y\n\n' done done