From: Junio C Hamano Date: Thu, 15 Feb 2018 18:19:11 GMT Subject: Re: [PATCH v3 04/14] commit-graph: implement write_commit_graph() Message-ID: In-Reply-To: <1518122258-157281-5-git-send-email-dstolee@microsoft.com> Derrick Stolee writes: > +struct packed_oid_list { > + struct object_id **list; > + int nr; > + int alloc; > +}; What is the typical access pattern for this data structure? If it is pretty much "allocate and grow as we find more", then a dynamic array of struct (rather than a dynamic array of pointers to struct) would be a lot more appropriate. IOW struct packed_oid_list { struct object_id *list; int nr, alloc; }; The version in the posted patch has to pay malloc overhead plus an extra pointer for each object id in the list; unless you often replace elements in the list randomly and/or you borrow object ID field in other existing data structure whose lifetime is longer than this list by pointing at it, I do not see how the extra indirection is worth it.