• R
    --pretty=format: parse commit message only once · f29d5958
    René Scharfe 提交于
    As Jeff King pointed out, some placeholder expansions are related to
    each other: the steps to calculate one go most of the way towards
    calculating the other, too.
    
    This patch makes format_commit_message() parse the commit message
    only once, remembering the position of each item.  This speeds up
    handling of format strings containing multiple placeholders from the
    set %s, %a*, %c*, %e, %b.
    
    Here are the timings for the git version in next.  The first one is
    to estimate the overhead of the caching, the second one is taken
    from http://svn.tue.mpg.de/tentakel/trunk/tentakel/Makefile as an
    example of a format string found in the wild.  The times are the
    fastest of three consecutive runs in each case:
    
    $ time git log --pretty=format:%e >/dev/null
    
    real    0m0.381s
    user    0m0.340s
    sys     0m0.024s
    
    $ time git log --pretty=format:"* %cd %cn%n%n%s%n%b" >/dev/null
    
    real    0m0.623s
    user    0m0.556s
    sys     0m0.052s
    
    And here the times with this patch:
    
    $ time git log --pretty=format:%e >/dev/null
    
    real    0m0.385s
    user    0m0.332s
    sys     0m0.040s
    
    $ time git log --pretty=format:"* %cd %cn%n%n%s%n%b" >/dev/null
    
    real    0m0.563s
    user    0m0.504s
    sys     0m0.048s
    Signed-off-by: NRene Scharfe <rene.scharfe@lsrfire.ath.cx>
    Signed-off-by: NJunio C Hamano <gitster@pobox.com>
    f29d5958
pretty.c 18.6 KB