git/list[1] front-page[2] threads[3] people[4] search[5] about
wed 2026-10-07 17:28 UTC

Re: grep vs git grep performance?

From
Stefan Beller <sbeller@google.com>
Date
Oct 26, 2017, 17:45 UTC
Message-ID
<CAGZ79kYWPunzZ2u=MtCoCadxXu_4etEK5DYnhYXo+CgeHrXQwQ@mail.gmail.com>
In-Reply-To
<1509039696.11245.9.camel@perches.com>
On Thu, Oct 26, 2017 at 10:41 AM, Joe Perches <joe@perches.com> wrote:
Show 46 quoted lines
> On Thu, 2017-10-26 at 09:58 -0700, Stefan Beller wrote:
>> + Avar who knows a thing about pcre (I assume the regex compilation
>> has impact on grep speed)
>>
>> On Thu, Oct 26, 2017 at 8:02 AM, Joe Perches <joe@perches.com> wrote:
>> > Comparing a cache warm git grep vs command line grep
>> > shows significant differences in cpu & wall clock.
>> >
>> > Any ideas how to improve this?
>> >
>> > $ time git grep "\bseq_.*%p\W" | wc -l
>> > 112
>> >
>> > real    0m4.271s
>> > user    0m15.520s
>> > sys     0m0.395s
>> >
>> > $ time grep -r --include=*.[ch] "\bseq_.*%p\W" * | wc -l
>> > 112
>> >
>> > real    0m1.164s
>> > user    0m0.847s
>> > sys     0m0.314s
>> >
>>
>> I wonder how much is algorithmic advantage vs coding/micro
>> optimization that we can do.
>
> As do I.  I presume this is libpcre related.
>
> For instance, git grep performance is better than grep for:
>
> $ time git grep -w "seq_printf" -- "*.[ch]" | wc -l
> 8609
>
> real    0m0.301s
> user    0m0.548s
> sys     0m0.372s
>
> $ time grep -w -r --include=*.[ch] "seq_printf" * | wc -l
> 8609
>
> real    0m0.706s
> user    0m0.396s
> sys     0m0.309s
>
One important piece of information is what version of Git you are running,

$ git tag --contains origin/ab/pcre-v2 v2.14.0 ...

(and the version of pcre, see the numbers) https://git.kernel.org/pub/scm/git/git.git/commit/?id=94da9193a6eb8f1085d611c04ff8bbb4f5ae1e0a

Previous: Joe PerchesNext: Joe Perches
Message 8 of 12 in “grep vs git grep performance?”
  1. Joe PerchesOct 26, 2017
  2. Han-Wen NienhuysOct 26, 2017
  3. Joe PerchesOct 26, 2017
  4. SZEDER GáborOct 26, 2017
  5. Joe PerchesOct 26, 2017
  6. Stefan BellerOct 26, 2017
  7. Joe PerchesOct 26, 2017
  8. Stefan BellerOct 26, 2017
  9. Joe PerchesOct 27, 2017
  10. Ævar Arnfjörð BjarmasonOct 27, 2017
  11. Joe PerchesOct 27, 2017
  12. Ævar Arnfjörð BjarmasonOct 28, 2017

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.