Re: git grep performance regression
From: Junio C Hamano <hidden>
Date: 2016-06-15 22:55:46
Ross Lagerwall [off-list ref] writes:
I have noticed a performance regression in git grep between v1.8.1 and
v1.8.1.1:
On the kernel tree:
For git 1.8.1:
$ time git grep foodsgsg
real 0m0.158s
user 0m0.290s
sys 0m0.207s
For git 1.8.1.1:
$ time /tmp/g/bin/git grep foodsgsg
real 0m0.501s
user 0m0.707s
sys 0m0.493s
A bisect seems to indicate that it was introduced by 94bc67:
commit 94bc671a1f2e8610de475c2494d2763355a99f65
Author: Jean-Noël AVILA [off-list ref]
Date: Sat Dec 8 21:04:39 2012 +0100
Add directory pattern matching to attributes
The manpage of gitattributes says: "The rules how the pattern
matches paths are the same as in .gitignore files" and the gitignore
pattern matching has a pattern ending with / for directory matching.
This rule is specifically relevant for the 'export-ignore' rule used
for git archive.
Signed-off-by: Jean-Noel Avila [off-list ref]
Signed-off-by: Junio C Hamano [off-list ref]Hmph, that looks really bad, especially given that in the normal codepath like "git grep", we would never care about directories (the attributes are normally applied to real paths with contents, and the use by archive is an anomaly) and the implementation should be done in a way not to impose such excess and useless overhead. We may end up reverting that patch for the time being X-<. Jean-Noël, ideas?