• Duy Nguyen's avatar
    pack-objects: reorder members to shrink struct object_entry · 3b13a5f2
    Duy Nguyen authored
    Previous patches leave lots of holes and padding in this struct. This
    patch reorders the members and shrinks the struct down to 80 bytes
    (from 136 bytes on 64-bit systems, before any field shrinking is done)
    with 16 bits to spare (and a couple more in in_pack_header_size when
    we really run out of bits).
    
    This is the last in a series of memory reduction patches (see
    "pack-objects: a bit of document about struct object_entry" for the
    first one).
    
    Overall they've reduced repack memory size on linux-2.6.git from
    3.747G to 3.424G, or by around 320M, a decrease of 8.5%. The runtime
    of repack has stayed the same throughout this series. Ævar's testing
    on a big monorepo he has access to (bigger than linux-2.6.git) has
    shown a 7.9% reduction, so the overall expected improvement should be
    somewhere around 8%.
    
    See 87po42cwql.fsf@evledraar.gmail.com on-list
    (https://public-inbox.org/git/87po42cwql.fsf@evledraar.gmail.com/) for
    more detailed numbers and a test script used to produce the numbers
    cited above.
    Signed-off-by: Duy Nguyen's avatarNguyễn Thái Ngọc Duy <pclouds@gmail.com>
    Signed-off-by: 's avatarJunio C Hamano <gitster@pobox.com>
    3b13a5f2
pack-objects.h 9.61 KB