summaryrefslogtreecommitdiff
path: root/t/unit-tests/test-lib.c
diff options
context:
space:
mode:
authorPatrick Steinhardt <ps@pks.im>2024-02-12 09:32:53 +0100
committerJunio C Hamano <gitster@pobox.com>2024-02-12 09:18:05 -0800
commita418a7abef72132eff23e783f80f8c88b3c63266 (patch)
tree480976285a4c473ffdc75015410f96f1582aa5f7 /t/unit-tests/test-lib.c
parent92fa3253c8423815e84be91a2d9a3509df20a646 (diff)
reftable/record: don't try to reallocate ref record name
When decoding reftable ref records we first release the pointer to the record passed to us and then use realloc(3P) to allocate the refname array. This is a bit misleading though as we know at that point that the refname will always be `NULL`, so we would always end up allocating a new char array anyway. Refactor the code to use `REFTABLE_ALLOC_ARRAY()` instead. As the following benchmark demonstrates this is a tiny bit more efficient. But the bigger selling point really is the gained clarity. Benchmark 1: show-ref: single matching ref (revision = HEAD~) Time (mean ± σ): 150.1 ms ± 4.1 ms [User: 146.6 ms, System: 3.3 ms] Range (min … max): 144.5 ms … 180.5 ms 1000 runs Benchmark 2: show-ref: single matching ref (revision = HEAD) Time (mean ± σ): 148.9 ms ± 4.5 ms [User: 145.2 ms, System: 3.4 ms] Range (min … max): 143.0 ms … 185.4 ms 1000 runs Summary show-ref: single matching ref (revision = HEAD) ran 1.01 ± 0.04 times faster than show-ref: single matching ref (revision = HEAD~) Ideally, we should try and reuse the memory of the old record instead of first freeing and then immediately reallocating it. This requires some more surgery though and is thus left for a future iteration. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 't/unit-tests/test-lib.c')
0 files changed, 0 insertions, 0 deletions