On Thu, Sep 06, 2007 at 10:48:06AM -0400, Nicolas Pitre wrote: > On Thu, 6 Sep 2007, Junio C Hamano wrote: > > Also how would this interact with the LRU > > delta base window we discussed a week or two ago? > > This is completely orthogonal. Maybe we should adjust the split point of the the object list so, that objects with the same name hash are processed by one thread, as the LRU could provide the most benefit for these objects. I think of something like (totally untested): for (i = 0; i < NR_THREADS; i++) { unsigned sublist_size = list_size / (NR_THREADS - i); + while (sublist_size < list_size && list[0]->hash == list[1]->hash) + sublist_size++; p[i].list = list; p[i].list_size = sublist_size; p[i].window = window; p[i].depth = depth; p[i].processed = processed; ret = pthread_create(&p[i].thread, NULL, threaded_find_deltas, &p[i]); if (ret) die("unable to create thread: %s", strerror(ret)); list += sublist_size; list_size -= sublist_size; } mfg Martin Kögler - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html