Re: git-diff-tree inordinately (O(M*N)) slow on files with many changes
- From
- Davide Libenzi <davidel@xmailserver.org>
- Date
- Oct 16, 2006, 23:52 UTC
- Message-ID
- <Pine.LNX.4.64.0610161651010.7697@alien.or.mcafeemobile.com>
- In-Reply-To
- <Pine.LNX.4.64.0610161604360.3962@g5.osdl.org>
On Mon, 16 Oct 2006, Linus Torvalds wrote:
Show 7 quoted lines
> That said, it unnecessarily calculates "BITS_IN_LONG - (b)" to shift with, > because it really shouldn't matter _which_ high bits you use for hashing, > so you might as well just use the "next" b bits, and have > > #define XDL_ADDBITS(v,b) ((v) + ((v) >> (b))) > #define XDL_MASKBITS(b) ((1UL << (b)) - 1) > #define XDL_HASHLONG(v,b) (XDL_ADDBITS((unsigned long)(v), b) & XDL_MASKBITS(b))
Ok, I'm fine with this. And my Opteron agrees too:
real 0m0.283s user 0m0.267s sys 0m0.016s
- Davide