refs.c: SSE2 optimizations for check_refname_component
commit745224e04a03e4544c58d5d38d3c54f67100f8eb
authorDavid Turner <dturner@twopensource.com>
Wed, 18 Jun 2014 05:54:42 +0000 (18 01:54 -0400)
committerJunio C Hamano <gitster@pobox.com>
Wed, 18 Jun 2014 17:57:18 +0000 (18 10:57 -0700)
tree615a8a79eaedbb737408f3b3c2ff8f0940f92684
parentdde8a902c774268628015705a7767f61af18b865
refs.c: SSE2 optimizations for check_refname_component

Optimize check_refname_component using SSE2 on x86_64.

git rev-parse HEAD is a good test-case for this, since it does almost
nothing except parse refs.  For one particular repo with about 60k
refs, almost all packed, the timings are:

Look up table: 29 ms
SSE2:          23 ms

This cuts about 20% off of the runtime.

Ondřej Bílka <neleai@seznam.cz> suggested an SSE2 approach to the
substring searches, which netted a speed boost over the SSE4.2 code I
had initially written.

Signed-off-by: David Turner <dturner@twitter.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
git-compat-util.h
refs.c
t/t1402-check-ref-format.sh
t/valgrind/default.supp