diff options
author | René Scharfe <rene.scharfe@lsrfire.ath.cx> | 2009-01-10 00:18:34 +0100 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2009-01-09 21:35:56 -0800 |
commit | c822255cfc1ac83daeeeee1647e3c775450c830c (patch) | |
tree | ae2027aed5ead1df39b4da3067300bd80e6cd1bc /grep.h | |
parent | fb62eb7fab97cea880ea7fe4f341a4dfad14ab48 (diff) | |
download | git-c822255cfc1ac83daeeeee1647e3c775450c830c.tar.gz |
grep: don't call regexec() for fixed strings
Add the new flag "fixed" to struct grep_pat and set it if the pattern
is doesn't contain any regex control characters in addition to if the
flag -F/--fixed-strings was specified.
This gives a nice speed up on msysgit, where regexec() seems to be
extra slow. Before (best of five runs):
$ time git grep grep v1.6.1 >/dev/null
real 0m0.552s
user 0m0.000s
sys 0m0.000s
$ time git grep -F grep v1.6.1 >/dev/null
real 0m0.170s
user 0m0.000s
sys 0m0.015s
With the patch:
$ time git grep grep v1.6.1 >/dev/null
real 0m0.173s
user 0m0.000s
sys 0m0.000s
The difference is much smaller on Linux, but still measurable.
Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'grep.h')
-rw-r--r-- | grep.h | 1 |
1 files changed, 1 insertions, 0 deletions
@@ -30,6 +30,7 @@ struct grep_pat { const char *pattern; enum grep_header_field field; regex_t regexp; + unsigned fixed:1; }; enum grep_expr_node { |