Re: git-diff-tree inordinately (O(M*N)) slow on files with many changes
- From
Junio C Hamano <junkio@cox.net>
- Date
- Oct 16, 2006, 22:53 UTC
- Message-ID
- <7vy7rfub36.fsf@assigned-by-dhcp.cox.net>
- In-Reply-To
- <Pine.LNX.4.64.0610161130090.3962@g5.osdl.org>
Linus Torvalds <torvalds@osdl.org> 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 <davidel@xmailserver.org> writes:
Show 6 quoted lines
> 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...