Skip to content

Commit 3446a59

Browse files
peffgitster
authored andcommitted
strbuf_getwholeline: use getc macro
strbuf_getwholeline calls fgetc in a tight loop. Using the getc form, which can be implemented as a macro, should be faster (and we do not care about it evaluating our argument twice, as we just have a plain variable). On my glibc system, running "git rev-parse refs/heads/does-not-exist" on a file with an extremely large (1.6GB) packed-refs file went from (best of 3 runs): real 0m19.383s user 0m18.876s sys 0m0.528s to: real 0m18.900s user 0m18.472s sys 0m0.448s for a wall-clock speedup of 2.5%. Signed-off-by: Jeff King <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent 2dfb2e0 commit 3446a59

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

strbuf.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -443,7 +443,7 @@ int strbuf_getwholeline(struct strbuf *sb, FILE *fp, int term)
443443
return EOF;
444444

445445
strbuf_reset(sb);
446-
while ((ch = fgetc(fp)) != EOF) {
446+
while ((ch = getc(fp)) != EOF) {
447447
strbuf_grow(sb, 1);
448448
sb->buf[sb->len++] = ch;
449449
if (ch == term)

0 commit comments

Comments
 (0)