Thread (8 messages) flat view 8 messages, 3 authors, 2016-06-15

Re: [PATCH] speedup allocation in pack-redundant.c

From: Alex Riesen <hidden>
Date: 2016-06-15 22:42:13

Possibly related (same subject, not in this thread)

Junio C Hamano, Tue, Nov 22, 2005 21:41:56 +0100:
quoted
Reuse discarded nodes of llists

Signed-off-by: Alex Riesen <redacted>
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++;
	}
    }
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help