Skip to content
  • Jeff King's avatar
    strbuf_getwholeline: avoid calling strbuf_grow · f80c153b
    Jeff King authored and Junio C Hamano's avatar Junio C Hamano committed
    
    
    As with the recent speedup to strbuf_addch, we can avoid
    calling strbuf_grow() in a tight loop of single-character
    adds by instead checking strbuf_avail.
    
    Note that we would instead call strbuf_addch directly here,
    but it does more work than necessary: it will NUL-terminate
    the result for each character read. Instead, in this loop we
    read the characters one by one and then add the terminator
    manually at the end.
    
    Running "git rev-parse refs/heads/does-not-exist" on a repo
    with an extremely large (1.6GB) packed-refs file went from
    (best-of-5):
    
      real    0m10.948s
      user    0m10.548s
      sys     0m0.412s
    
    to:
    
      real    0m8.601s
      user    0m8.084s
      sys     0m0.524s
    
    for a wall-clock speedup of 21%.
    
    Helped-by: default avatarEric Sunshine <sunshine@sunshineco.com>
    Signed-off-by: default avatarJeff King <peff@peff.net>
    Signed-off-by: default avatarJunio C Hamano <gitster@pobox.com>
    f80c153b