Re: [PATCH] speedup allocation in pack-redundant.c
- From
Alex Riesen <raa.lkml@gmail.com>
- Date
- Nov 22, 2005, 23:00 UTC
- Message-ID
- <20051122230011.GA2916@steel.home>
- In-Reply-To
- <7vek58ct4b.fsf@assigned-by-dhcp.cox.net>
Junio C Hamano, Tue, Nov 22, 2005 21:41:56 +0100:
Show 7 quoted lines
> > Reuse discarded nodes of llists > > > > Signed-off-by: Alex Riesen <ariesen@harmanbecker.com> > > I think making allocation/deallocation to the central place is a > good cleanup, but I am not sure about the free-nodes reusing. > Does this make difference in real life?
It definitely does, though nor very much. I have no real numbers at hand (being home now), but I remember it was 1 min with against 3 min without the patch on cygwin+fat32, which is already bad enough all by itself. Very big repository with no redundant packs in it.
> If so, it might be worth doing the slab-like allocation, since > free-nodes are very small structure and malloc overhead is not > ignorable there.
Like this?
if ( free_nodes ) { ... }
else {
struct llist_node *slab = malloc(sizeof(*slab) * BLKCNT);
for ( i =0; i < BLKCNT; ++i ) {
slab->next = free_nodes;
free_nodes = slab++;
}
}