Skip to content
  • Karsten Blees's avatar
    update-index/diff-index: use core.preloadindex to improve performance · 7349afd2
    Karsten Blees authored
    'update-index --refresh' and 'diff-index' (without --cached) don't honor
    the core.preloadindex setting yet. Porcelain commands using these (such as
    git [svn] rebase) suffer from this, especially on Windows.
    
    Use read_cache_preload to improve performance.
    
    Additionally, in builtin/diff.c, don't preload index status if we don't
    access the working copy (--cached).
    
    Results with msysgit on WebKit repo (2GB in 200k files):
    
                    | update-index | diff-index | rebase
    ----------------+--------------+------------+---------
    msysgit-v1.8.0  |       9.157s |    10.536s | 42.791s
    + preloadindex  |       9.157s |    10.536s | 28.725s
    + this patch    |       2.329s |     2.752s | 15.152s
    + fscache [1]   |       0.731s |     1.171s |  8.877s
    
    [1] https://github.com/kblees/git/tree/kb/fscache-v3
    
    
    
    Thanks-to: Albert Krawczyk <pro-logic@optusnet.com.au>
    Signed-off-by: default avatarKarsten Blees <blees@dcon.de>
    Signed-off-by: default avatarJeff King <peff@peff.net>
    7349afd2