From: Alex Riesen Date: Tue, 22 Nov 2005 23:00:11 GMT Subject: Re: [PATCH] speedup allocation in pack-redundant.c 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: > > Reuse discarded nodes of llists > > > > Signed-off-by: Alex Riesen > > 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++; } }