Skip to content
  • Duy Nguyen's avatar
    fsck: avoid reading every object twice · c9486eb0
    Duy Nguyen authored and Junio C Hamano's avatar Junio C Hamano committed
    
    
    During verify_pack() all objects are read for SHA-1 check. Then
    fsck_sha1() is called on every object, which read the object again
    (fsck_sha1 -> parse_object -> read_sha1_file).
    
    Avoid reading an object twice, do fsck_sha1 while we have an object
    uncompressed data in verify_pack.
    
    On git.git, with this patch I got:
    
    $ /usr/bin/time ./git fsck >/dev/null
    98.97user 0.90system 1:40.01elapsed 99%CPU (0avgtext+0avgdata 616624maxresident)k
    0inputs+0outputs (0major+194186minor)pagefaults 0swaps
    
    Without it:
    
    $ /usr/bin/time ./git fsck >/dev/null
    231.23user 2.35system 3:53.82elapsed 99%CPU (0avgtext+0avgdata 636688maxresident)k
    0inputs+0outputs (0major+461629minor)pagefaults 0swaps
    
    Signed-off-by: default avatarNguyễn Thái Ngọc Duy <pclouds@gmail.com>
    Signed-off-by: default avatarJunio C Hamano <gitster@pobox.com>
    c9486eb0