From: Junio C Hamano Date: Thu, 08 Sep 2005 16:51:34 GMT Subject: Re: [PATCH 0/2] A new merge algorithm, take 3 Message-ID: <7v7jdrwlih.fsf@assigned-by-dhcp.cox.net> In-Reply-To: <4320536D.2010706@citi.umich.edu> Chuck Lever writes: > Junio C Hamano wrote: >> Chuck Lever writes: >> > once the list implementation is working well, i plan to go back and > replace it with something more sophisticated which can perform > insertion, deletion, and searching efficiently. Well, what I wanted to see was if we can get away without introducing more sophisticated data structures, which would add complexity. >> I haven't timed it like you did, but my gut feeling is that the >> most wastage during the merge is coming from having to move >> entries because we "insert into" or "remove from" the same >> active-cache array. > > the merge actually replaces entries in place, so it is already fairly > efficient. the wastage in the merge case arises from the many list > insertions done by read_cache, all of which involve moving some of the > active cache array. Yes, the reading of three trees upfront is probably the culprit in your case, and I think that is something Daniel's read-tree rewrite can help. I still see some remove_cache_entry_at() there because it works on the active_cache in place, but the structure of the new code should be much easier to make the kind of modification we are talking about. >> I think what Daniel >> did to read-tree recently, still in the proposed updates branch, >> would make this kind of change far easier to implement. > > as i'm new to git development, i wasn't aware of the proposed branch. i > will see if i can take a look (or send me a pointer to the list archives > if he has posted them here). If you already have a local copy of git.git repository you work in: git fetch http://kernel.org/pub/scm/git/git.git +pu:refs/heads/ko-pu git checkout -f ko-pu Otherwise git clone http://kernel.org/pub/scm/git/git.git peek cd peek git checkout -f pu The interesting change from the mainline is in read-tree.c You can browse http://kernel.org/git/ and see commitdiffs in the "pu" branch if you are not interested in slurping the whole proposed updates branch.