• L
    Remove "refs" field from "struct object" · 3e4339e6
    Linus Torvalds 提交于
    This shrinks "struct object" to the absolutely minimal size possible.
    It now contains /only/ the object flags and the SHA1 hash name of the
    object.
    
    The "refs" field, which is really needed only for fsck, is maintained in
    a separate hashed lookup-table, allowing all normal users to totally
    ignore it.
    
    This helps memory usage, although not as much as I hoped: it looks like
    the allocation overhead of malloc (and the alignment constraints in
    particular) means that while the structure size shrinks, the actual
    allocation overhead mostly does not.
    
    [ That said: memory usage is actually down, but not as much as it should
      be: I suspect just one of the object types actually ended up shrinking
      its effective allocation size.
    
      To get to the next level, we probably need specialized allocators that
      don't pad the allocation more than necessary. ]
    
    The separation makes for some code cleanup, though, and makes the ref
    tracking that fsck wants a clearly separate thing.
    Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
    Signed-off-by: NJunio C Hamano <junkio@cox.net>
    3e4339e6
object.c 4.3 KB