On Mon, Jan 11, 2010 at 07:59:18AM -0800, Linus Torvalds wrote: > The meh news: this shows how grep is faster than regexec() due to being a > smarter algorithm. For the non-fixed case (I used "qwerty.*as"), the > numbers are > > - built-in: > real 0m0.548s > user 0m0.384s > sys 0m0.152s > > - external: > real 0m0.415s > user 0m0.176s > sys 0m0.160s > > so it really is just 'strstr()' that is faster. But This is a 'meh', > because I don't really care, and the new code is still way faster than the > old one. And I'd be personally willing to just drop the external grep if > this is the worst problem. Just for fun, I repeated my pcre tests on what's in pu (which has Junio's lookahead patch now). Before they didn't show any improvement because we wasted all of our time in non-regex code. There is some improvement in just using pcre, but I didn't get any improvement by tweaking it: [pu] $ time git grep 'qwerty.*as' >/dev/null real 0m1.007s user 0m0.752s sys 0m0.252s [pu + pcre] $ time git grep --no-ext-grep 'qwerty.*as' >/dev/null real 0m0.864s user 0m0.648s sys 0m0.212s [pu + pcre_study] $ time git grep --no-ext-grep 'qwerty.*as' >/dev/null real 0m0.866s user 0m0.628s sys 0m0.200s [pu + pcre_dfa_exec] $ time git grep --no-ext-grep 'qwerty.*as' >/dev/null real 0m0.868s user 0m0.608s sys 0m0.256s So pcre seems to buy us about 15%, and tweaking it gets lost in the noise (or I am tweaking it badly, which is entirely possible). I doubt it's worth the trouble of supporting pcre for that much. And let me add an additional vote against strstr: $ time git grep --no-ext-grep qwerty >/dev/null real 0m3.285s user 0m3.032s sys 0m0.252s -Peff -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html