diff options
author | René Scharfe <rene.scharfe@lsrfire.ath.cx> | 2009-01-10 00:08:40 +0100 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2009-01-09 21:33:35 -0800 |
commit | fb62eb7fab97cea880ea7fe4f341a4dfad14ab48 (patch) | |
tree | 281d1b9daeb9a1d0a7ecd86b1e03d686a3394633 /builtin-prune.c | |
parent | Merge branch 'mh/maint-sendmail-cc-doc' (diff) | |
download | tgif-fb62eb7fab97cea880ea7fe4f341a4dfad14ab48.tar.xz |
grep -w: forward to next possible position after rejected match
grep -w accepts matches between non-word characters, only. If a match
from regexec() doesn't meet this criteria, grep continues its search
after the first character of that match.
We can be a bit smarter here and skip all positions that follow a word
character first, as they can't match our criteria. This way we can
consume characters quite cheaply and don't need to special-case the
handling of the beginning of a line.
Here's a contrived example command on msysgit (best of five runs):
$ time git grep -w ...... v1.6.1 >/dev/null
real 0m1.611s
user 0m0.000s
sys 0m0.015s
With the patch it's quite a bit faster:
$ time git grep -w ...... v1.6.1 >/dev/null
real 0m1.179s
user 0m0.000s
sys 0m0.015s
More common search patterns will gain a lot less, but it's a nice clean
up anyway.
Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'builtin-prune.c')
0 files changed, 0 insertions, 0 deletions