dirs.addpath: rework algorithm to search forward
This improves performance because it uses strchr rather than a loop.
For LLVM/clang version "Apple LLVM version 6.0 (clang-600.0.56) (based on LLVM
3.5svn)" on OS X, for a repo with over 200,000 files, this improves perfdirs
from 0.248 seconds to 0.230 (7.3%)
For gcc 4.4.6 on Linux, for a test repo with over 500,000 files, this improves
perfdirs from 0.704 seconds to 0.658 (6.5%).
$ hg init base
$ cd base
$ echo 'alpha' > alpha
$ hg ci -A -m 'add alpha'
adding alpha
$ cd ..
$ hg clone base work
updating to branch default
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ cd work
$ echo 'beta' > beta
$ hg ci -A -m 'add beta'
adding beta
$ cd ..
$ cd base
$ echo 'gamma' > gamma
$ hg ci -A -m 'add gamma'
adding gamma
$ cd ..
$ cd work
$ hg pull -q
$ hg merge
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
Update --clean to revision 1 to simulate a failed merge:
$ rm alpha beta gamma
$ hg update --clean 1
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ cd ..