summaryrefslogtreecommitdiff
path: root/alloc.c
diff options
context:
space:
mode:
authorAbhishek Kumar <abhishekkumar8222@gmail.com>2020-06-17 09:14:09 (GMT)
committerJunio C Hamano <gitster@pobox.com>2020-06-17 21:37:23 (GMT)
commit4844812b9ec9bc6ffdc2da2c54d9146ff4c97d94 (patch)
treeb0df2ea1f12101e9ab2456820fc5b32a86db91ed /alloc.c
parent6da43d937ca96d277556fa92c5a664fb1cbcc8ac (diff)
downloadgit-4844812b9ec9bc6ffdc2da2c54d9146ff4c97d94.zip
git-4844812b9ec9bc6ffdc2da2c54d9146ff4c97d94.tar.gz
git-4844812b9ec9bc6ffdc2da2c54d9146ff4c97d94.tar.bz2
commit-graph: introduce commit_graph_data_slab
The struct commit is used in many contexts. However, members `generation` and `graph_pos` are only used for commit-graph related operations and otherwise waste memory. This wastage would have been more pronounced as we transition to generation number v2, which uses 64-bit generation number instead of current 32-bits. As they are often accessed together, let's introduce struct commit_graph_data and move them to a commit_graph_data slab. While the overall test suite runs just as fast as master, (series: 26m48s, master: 27m34s, faster by 2.87%), certain commands like `git merge-base --is-ancestor` were slowed by 40% as discovered by Szeder Gábor [1]. After minimizing commit-slab access, the slow down persists but is closer to 20%. Derrick Stolee believes the slow down is attributable to the underlying algorithm rather than the slowness of commit-slab access [2] and we will follow-up in a later series. [1]: https://lore.kernel.org/git/20200607195347.GA8232@szeder.dev/ [2]: https://lore.kernel.org/git/13db757a-9412-7f1e-805c-8a028c4ab2b1@gmail.com/ Signed-off-by: Abhishek Kumar <abhishekkumar8222@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'alloc.c')
0 files changed, 0 insertions, 0 deletions