]> git.ipfire.org Git - thirdparty/git.git/commit
is_ntfs_dotgit(): speed it up
authorJohannes Schindelin <johannes.schindelin@gmx.de>
Fri, 6 Sep 2019 19:09:35 +0000 (21:09 +0200)
committerJohannes Schindelin <johannes.schindelin@gmx.de>
Thu, 5 Dec 2019 14:36:51 +0000 (15:36 +0100)
commit3a85dc7d534fc2d410ddc0c771c963b20d1b4857
tree11481a90ba78f64d09320514b0232c4ac2980885
parent91bd46588e6959e6903e275f78b10bd07830d547
is_ntfs_dotgit(): speed it up

Previously, this function was written without focusing on speed,
intending to make reviewing the code as easy as possible, to avoid any
bugs in this critical code.

Turns out: we can do much better on both accounts. With this patch, we
make it as fast as this developer can make it go:

- We avoid the call to `is_dir_sep()` and make all the character
  comparisons explicit.

- We avoid the cost of calling `strncasecmp()` and unroll the test for
  `.git` and `git~1`, not even using `tolower()` because it is faster to
  compare against two constant values.

- We look for `.git` and `.git~1` first thing, and return early if not
  found.

- We also avoid calling a separate function for detecting chains of
  spaces and periods.

Each of these improvements has a noticeable impact on the speed of
`is_ntfs_dotgit()`.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
path.c