Re: [PATCH/RFC v3 6/8] Add case insensitivity support when using git ls-files
From: Thomas Adam <hidden>
Date: 2016-06-15 22:49:41
Hi -- On 3 October 2010 19:19, Johannes Sixt [off-list ref] wrote:
On Sonntag, 3. Oktober 2010, Thomas Adam wrote:quoted
Hi -- On 3 October 2010 10:56, Ævar Arnfjörð Bjarmason [off-list ref] wrote:quoted
+ if (ignore_case) { + for (;;) { + unsigned char c1 = tolower(*match); + unsigned char c2 = tolower(*name); + if (c1 == '\0' || is_glob_special(c1)) + break; + if (c1 != c2) + return 0; + match++; + name++; + namelen--; + } + } else { + for (;;) { + unsigned char c1 = *match; + unsigned char c2 = *name; + if (c1 == '\0' || is_glob_special(c1)) + break; + if (c1 != c2) + return 0; + match++; + name++; + namelen--; + } }It's a real shame about the code duplication here. Can we not avoid it just by doing: unsigned char c1 = (ignore_case) ? tolower(*match) : *match; unisgned char c2 = (ignore_case) ? tolower(*name) : *name; I appreciate that to some it might look like perl golf, but...It has been discussed, and IIRC, the concensus was to keep the code duplication because this is an inner loop.
I must have missed the discussion -- but why/how does making it an inner-loop somehow prevent it from such an obvious (and readable) optimisation, which would have fitted in well in other areas. -- Thomas Adam