summaryrefslogtreecommitdiff
path: root/compat/win32/dirent.h
diff options
context:
space:
mode:
authorLibravatar Nguyễn Thái Ngọc Duy <pclouds@gmail.com>2012-11-24 11:33:50 +0700
committerLibravatar Junio C Hamano <gitster@pobox.com>2012-11-26 11:13:13 -0800
commit8c6abbcd2720dd80b1c9b6db8104c4dcc7cba6c7 (patch)
tree9ee9ada92c4cb6bf3f8e5874d20664cf46a3e0b4 /compat/win32/dirent.h
parentpathspec: do exact comparison on the leading non-wildcard part (diff)
downloadtgif-8c6abbcd2720dd80b1c9b6db8104c4dcc7cba6c7.tar.xz
pathspec: apply "*.c" optimization from exclude
When a pattern contains only a single asterisk as wildcard, e.g. "foo*bar", after literally comparing the leading part "foo" with the string, we can compare the tail of the string and make sure it matches "bar", instead of running fnmatch() on "*bar" against the remainder of the string. -O2 build on linux-2.6, without the patch: $ time git rev-list --quiet HEAD -- '*.c' real 0m40.770s user 0m40.290s sys 0m0.256s With the patch $ time ~/w/git/git rev-list --quiet HEAD -- '*.c' real 0m34.288s user 0m33.997s sys 0m0.205s The above command is not supposed to be widely popular. It's chosen because it exercises pathspec matching a lot. The point is it cuts down matching time for popular patterns like *.c, which could be used as pathspec in other places. Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'compat/win32/dirent.h')
0 files changed, 0 insertions, 0 deletions