summaryrefslogtreecommitdiff
path: root/builtin/check-ignore.c
diff options
context:
space:
mode:
authorKarsten Blees <karsten.blees@gmail.com>2013-04-15 19:13:35 (GMT)
committerJunio C Hamano <gitster@pobox.com>2013-04-15 19:34:01 (GMT)
commit8aaf8d7728e8ac50cbf6bcad05b6e896d4e69e0b (patch)
tree2d5e859c61225f786a0b49432ac97127dde5dd2b /builtin/check-ignore.c
parentb07bc8c8c3c492d657a8bedf04ff939763ea8222 (diff)
downloadgit-8aaf8d7728e8ac50cbf6bcad05b6e896d4e69e0b.zip
git-8aaf8d7728e8ac50cbf6bcad05b6e896d4e69e0b.tar.gz
git-8aaf8d7728e8ac50cbf6bcad05b6e896d4e69e0b.tar.bz2
dir.c: git-status: avoid is_excluded checks for tracked files
Checking if a file is in the index is much faster (hashtable lookup) than checking if the file is excluded (linear search over exclude patterns). Skip is_excluded checks for files: move the cache_name_exists check from treat_file to treat_one_path and return early if the file is tracked. This can safely be done as all other code paths also return path_ignored for tracked files, and dir_add_ignored skips tracked files as well. There's just one line left in treat_file, so move this to treat_one_path as well. Here's some performance data for git-status from the linux and WebKit repos (best of 10 runs on a Debian Linux on SSD, core.preloadIndex=true): | status | status --ignored | linux | WebKit | linux | WebKit -------+-------+--------+-------+--------- before | 0.218 | 1.583 | 0.321 | 2.579 after | 0.156 | 0.988 | 0.202 | 1.279 gain | 1.397 | 1.602 | 1.589 | 2.016 Signed-off-by: Karsten Blees <blees@dcon.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'builtin/check-ignore.c')
0 files changed, 0 insertions, 0 deletions