mirror of
https://github.com/git/git.git
synced 2025-01-21 06:53:30 +08:00
grep: use REG_STARTEND (if available) to speed up regexec
BSD and glibc have an extension to regexec which takes a buffer + length pair instead of a NUL-terminated string. Since we already have the length computed this can save us a strlen call inside regexec. Signed-off-by: Benjamin Kramer <benny.kra@googlemail.com> Acked-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
e3f67d30b2
commit
24072c0256
9
grep.c
9
grep.c
@ -640,8 +640,15 @@ static int look_ahead(struct grep_opt *opt,
|
||||
|
||||
if (p->fixed)
|
||||
hit = !fixmatch(p->pattern, bol, p->ignore_case, &m);
|
||||
else
|
||||
else {
|
||||
#ifdef REG_STARTEND
|
||||
m.rm_so = 0;
|
||||
m.rm_eo = *left_p;
|
||||
hit = !regexec(&p->regexp, bol, 1, &m, REG_STARTEND);
|
||||
#else
|
||||
hit = !regexec(&p->regexp, bol, 1, &m, 0);
|
||||
#endif
|
||||
}
|
||||
if (!hit || m.rm_so < 0 || m.rm_eo < 0)
|
||||
continue;
|
||||
if (earliest < 0 || m.rm_so < earliest)
|
||||
|
Loading…
Reference in New Issue
Block a user