From: David Barr Date: Tue, 23 Nov 2010 07:53:48 +0000 (-0600) Subject: fast-import: insert new object entries at start of hash bucket X-Git-Tag: v1.7.4-rc0~40^2 X-Git-Url: https://git.tokkee.org/?a=commitdiff_plain;h=b7c1ce4f14f37600a8a5bf8d81e0a723d42644b9;p=git.git fast-import: insert new object entries at start of hash bucket More often than not, find_object is called for recently inserted objects. Optimise for this case by inserting new entries at the start of the chain. This doesn't affect the cost of new inserts but reduces the cost of find and insert for existing object entries. Signed-off-by: David Barr Signed-off-by: Jonathan Nieder Signed-off-by: Junio C Hamano --- diff --git a/fast-import.c b/fast-import.c index 74f08bd55..89d074bbe 100644 --- a/fast-import.c +++ b/fast-import.c @@ -539,22 +539,17 @@ static struct object_entry *insert_object(unsigned char *sha1) { unsigned int h = sha1[0] << 8 | sha1[1]; struct object_entry *e = object_table[h]; - struct object_entry *p = NULL; while (e) { if (!hashcmp(sha1, e->idx.sha1)) return e; - p = e; e = e->next; } e = new_object(sha1); - e->next = NULL; + e->next = object_table[h]; e->idx.offset = 0; - if (p) - p->next = e; - else - object_table[h] = e; + object_table[h] = e; return e; }