diff options
author | Ævar Arnfjörð Bjarmason <avarab@gmail.com> | 2021-09-08 03:08:03 +0200 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2021-09-08 07:04:03 +0200 |
commit | 8fe8bae9d28e2b02ceb482ab89ea88bb20556f1d (patch) | |
tree | bfc00915ffb921352658d2ac9312a9d695bfcac5 /pack-write.c | |
parent | Git 2.32 (diff) | |
download | git-8fe8bae9d28e2b02ceb482ab89ea88bb20556f1d.tar.xz git-8fe8bae9d28e2b02ceb482ab89ea88bb20556f1d.zip |
pack-write: skip *.rev work when not writing *.rev
Fix a performance regression introduced in a587b5a786 (pack-write.c:
extract 'write_rev_file_order', 2021-03-30) and stop needlessly
allocating the "pack_order" array and sorting it with
"pack_order_cmp()", only to throw that work away when we discover that
we're not writing *.rev files after all.
This redundant work was not present in the original version of this
code added in 8ef50d9958 (pack-write.c: prepare to write 'pack-*.rev'
files, 2021-01-25). There we'd call write_rev_file() from
e.g. finish_tmp_packfile(), but we'd "return NULL" early in
write_rev_file() if not doing a "WRITE_REV" or "WRITE_REV_VERIFY".
Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'pack-write.c')
-rw-r--r-- | pack-write.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/pack-write.c b/pack-write.c index f1fc3ecafa..1883848e7c 100644 --- a/pack-write.c +++ b/pack-write.c @@ -224,6 +224,9 @@ const char *write_rev_file(const char *rev_name, uint32_t i; const char *ret; + if (!(flags & WRITE_REV) && !(flags & WRITE_REV_VERIFY)) + return NULL; + ALLOC_ARRAY(pack_order, nr_objects); for (i = 0; i < nr_objects; i++) pack_order[i] = i; |