threaded delta search: better chunck split point
authorNicolas Pitre <nico@cam.org>
Mon, 10 Sep 2007 04:06:10 +0000 (00:06 -0400)
committerJunio C Hamano <gitster@pobox.com>
Mon, 10 Sep 2007 05:25:43 +0000 (22:25 -0700)
Try to keep object with the same name hash together.

Suggested by Martin Koegler.

Signed-off-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin-pack-objects.c

index 6014119..b13558e 100644 (file)
@@ -1635,6 +1635,11 @@ static void ll_find_deltas(struct object_entry **list, unsigned list_size,
                if (sublist_size > list_size)
                        sublist_size = list_size;
 
+               /* try to split chunks on "path" boundaries */
+               while (sublist_size < list_size && list[sublist_size]->hash &&
+                      list[sublist_size]->hash == list[sublist_size-1]->hash)
+                       sublist_size++;
+
                pthread_mutex_lock(&data_provider);
                data_requester->list = list;
                data_requester->list_size = sublist_size;