reftable: memory optimizations for reflog iteration
Get series with b4
b4 am [email protected]Versions newest first
- v1 Latest7 patches 12 repliesIn review
Patches in v1 No applies recorded yet
| # | Subject and files | Size | Replies | Applied |
|---|---|---|---|---|
| 1/7 | refs/reftable: reload correct stack when creating reflog iterrefs/ | +1 | 5 replies | |
| 2/7 | reftable/record: convert old and new object IDs to arraysrefs/ reftable/ reftable/ +4 more | +61 | 0 replies | |
| 3/7 | reftable/record: avoid copying author inforeftable/ | +21 | 2 replies | |
| 4/7 | reftable/record: reuse refnames when decoding log recordsreftable/ reftable/ | +2 | 0 replies | |
| 5/7 | reftable/record: reuse message when decoding log recordsreftable/ reftable/ | +4 | 0 replies | |
| 6/7 | reftable/record: use scratch buffer when decoding recordsreftable/ reftable/ reftable/ +2 more | +68 | 3 replies | |
| 7/7 | refs/reftable: track last log record name via strbufrefs/ | +6 | 0 replies |
Reviews trailers per patch
None of the 7 patches has a Reviewed-by or Acked-by of their own; the series has one for all of them.
| Patch | Josh Steadmon |
|---|---|
| Series | R-b |
| 1/7 | |
| 2/7 | |
| 3/7 | |
| 4/7 | |
| 5/7 | |
| 6/7 | |
| 7/7 |
Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes.
Cover letter [PATCH 0/7] reftable: memory optimizations for reflog iteration
Hi,
this patch series does the same as all the preceding patch series that optimized how the reftable library iterates through refs, but for reflogs instead.
The goal of this patch series is to arrive at a constant number of allocations when iterating refs. This is achieved in mostly the same way we did it for ref iteration, namely by reusing already-allocated memory. Overall, this brings us down from 8 allocations per reflog record to essentially 0 allocations per reflog. Iterating through 1 million reflogs with git reflog list thus goes down from 8.068m allocations to only around 68.5k.
This series is built on top of "master" at b387623c12 (The third batch, 2024-03-01) with Junio's "ps/reftable-iteration-perf-part2" at 43f70eaea0 (refs/reftable: precompute prefix length, 2024-03-04) merged into it.
Patrick
Patrick Steinhardt (7):
refs/reftable: reload correct stack when creating reflog iter reftable/record: convert old and new object IDs to arrays reftable/record: avoid copying author info reftable/record: reuse refnames when decoding log records reftable/record: reuse message when decoding log records reftable/record: use scratch buffer when decoding records refs/reftable: track last log record name via strbuf
refs/reftable-backend.c | 52 +++++---------- reftable/block.c | 4 +- reftable/block.h | 2 + reftable/merged_test.c | 11 ++-- reftable/readwrite_test.c | 62 +++++++----------- reftable/record.c | 129 ++++++++++++++----------------------- reftable/record.h | 5 +- reftable/record_test.c | 68 ++++++++++--------- reftable/reftable-record.h | 6 +- reftable/stack_test.c | 26 ++++---- 10 files changed, 154 insertions(+), 211 deletions(-)
Signature · 1 line
2.44.0