From: Junio C Hamano Date: Mon, 16 Oct 2006 22:53:17 GMT Subject: Re: git-diff-tree inordinately (O(M*N)) slow on files with many changes Message-ID: <7vy7rfub36.fsf@assigned-by-dhcp.cox.net> In-Reply-To: Linus Torvalds writes: > Junio, I think this is worthy to go in before a 1.4.3 release. Possibly > even back-ported to earlier trees. Thanks for resolving this quickly; I was (am still somewhat) down sick today and missed all the excitement. > Quite frankly, I prefer my previous patch more, it just avoids that whole > problem, and two shifts and adds (even with a conditional) are often > faster than a full 64-bit multiply. I agree (although I am not sure about the "do it twice for small" bit), and I think Davide agrees with you in his reply: Davide Libenzi writes: > On Mon, 16 Oct 2006, Linus Torvalds wrote: > ... > I ended up using this one: > > #define XDL_HASHLONG(v, b) ((((unsigned long) (v) >> ((CHAR_BIT * sizeof(unsigned long)) - (b))) + \ > (unsigned long) (v)) & ((1UL << (b)) - 1)) so I am inclined to apply Davide's version, but I am going to bed again now...