diff options
author | Eric Wong <e@80x24.org> | 2021-07-07 23:10:16 +0000 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2021-07-07 21:27:56 -0700 |
commit | 407532f82d3fdfd18d4ec276ddeb359e7c724aa6 (patch) | |
tree | 54a7842ae231458de15ed58c5e2f724bd5fc7bff | |
parent | speed up alt_odb_usable() with many alternates (diff) | |
download | tgif-407532f82d3fdfd18d4ec276ddeb359e7c724aa6.tar.xz |
avoid strlen via strbuf_addstr in link_alt_odb_entry
We can save a few milliseconds (across 100K odbs) by using
strbuf_addbuf() instead of strbuf_addstr() by passing `entry' as
a strbuf pointer rather than a "const char *".
Signed-off-by: Eric Wong <e@80x24.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r-- | object-file.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/object-file.c b/object-file.c index a13f49b192..2dd70ddf3a 100644 --- a/object-file.c +++ b/object-file.c @@ -567,18 +567,18 @@ static int alt_odb_usable(struct raw_object_store *o, static void read_info_alternates(struct repository *r, const char *relative_base, int depth); -static int link_alt_odb_entry(struct repository *r, const char *entry, +static int link_alt_odb_entry(struct repository *r, const struct strbuf *entry, const char *relative_base, int depth, const char *normalized_objdir) { struct object_directory *ent; struct strbuf pathbuf = STRBUF_INIT; khiter_t pos; - if (!is_absolute_path(entry) && relative_base) { + if (!is_absolute_path(entry->buf) && relative_base) { strbuf_realpath(&pathbuf, relative_base, 1); strbuf_addch(&pathbuf, '/'); } - strbuf_addstr(&pathbuf, entry); + strbuf_addbuf(&pathbuf, entry); if (strbuf_normalize_path(&pathbuf) < 0 && relative_base) { error(_("unable to normalize alternate object path: %s"), @@ -669,7 +669,7 @@ static void link_alt_odb_entries(struct repository *r, const char *alt, alt = parse_alt_odb_entry(alt, sep, &entry); if (!entry.len) continue; - link_alt_odb_entry(r, entry.buf, + link_alt_odb_entry(r, &entry, relative_base, depth, objdirbuf.buf); } strbuf_release(&entry); |