Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Commits on Jun 23, 2008
  1. Linus Torvalds Junio C Hamano

    Shrink the git binary a bit by avoiding unnecessary inline functions

    torvalds authored gitster committed
    So I was looking at the disgusting size of the git binary, and even with
    the debugging removed, and using -Os instead of -O2, the size of the text
    section was pretty high. In this day and age I guess almost a megabyte of
    text isn't really all that surprising, but it still doesn't exactly make
    me think "lean and mean".
    With -Os, a surprising amount of text space is wasted on inline functions
    that end up just being replicated multiple times, and where performance
    really isn't a valid reason to inline them. In particular, the trivial
    wrapper functions like "xmalloc()" are used _everywhere_, and making them
    inline just duplicates the text (and the string we use to 'die()' on
    failure) unnecessarily.
    So this just moves them into a "wrapper.c" file, getting rid of a tiny bit
    of unnecessary bloat. The following numbers are both with "CFLAGS=-Os":
    	[torvalds@woody git]$ size git
    	   text	   data	    bss	    dec	    hex	filename
    	 700460	  15160	 292184	1007804	  f60bc	git
    	[torvalds@woody git]$ size git
    	   text	   data	    bss	    dec	    hex	filename
    	 670540	  15160	 292184	 977884	  eebdc	git
    so it saves almost 30k of text-space (it actually saves more than that
    with the default -O2, but I don't think that's necessarily a very relevant
    number from a "try to shrink git" standpoint).
    It might conceivably have a performance impact, but none of this should be
    _that_ performance critical. The real cost is not generally in the wrapper
    anyway, but in the code it wraps (ie the cost of "xread()" is all in the
    read itself, not in the trivial wrapping of it).
    Signed-off-by: Linus Torvalds <>
    Signed-off-by: Junio C Hamano <>
Something went wrong with that request. Please try again.