• J
    grep: load file data after checking binary-ness · 08265798
    Jeff King 提交于
    Usually we load each file to grep into memory, check whether
    it's binary, and then either grep it (the default) or not
    (if "-I" was given).
    
    In the "-I" case, we can skip loading the file entirely if
    it is marked as binary via gitattributes. On my giant
    3-gigabyte media repository, doing "git grep -I foo" went
    from:
    
      real    0m0.712s
      user    0m0.044s
      sys     0m4.780s
    
    to:
    
      real    0m0.026s
      user    0m0.016s
      sys     0m0.020s
    
    Obviously this is an extreme example. The repo is almost
    entirely binary files, and you can see that we spent all of
    our time asking the kernel to read() the data. However, with
    a cold disk cache, even avoiding a few binary files can have
    an impact.
    Signed-off-by: NJeff King <peff@peff.net>
    Signed-off-by: NJunio C Hamano <gitster@pobox.com>
    08265798
grep.c 30.2 KB