Re: [PATCH 3/4] diffcore-pickaxe: further refactor count_match()
- From
René Scharfe <rene.scharfe@lsrfire.ath.cx>
- Date
- Feb 28, 2009, 18:15 UTC
- Message-ID
- <49A97F52.4080405@lsrfire.ath.cx>
- In-Reply-To
- <7vmyc6foj3.fsf@gitster.siamese.dyndns.org>
Junio C Hamano schrieb:
Show 18 quoted lines
> René Scharfe <rene.scharfe@lsrfire.ath.cx> writes: > >> I get this (Ubuntu 8.10 x64, Fedora 10 x64 using the same Linux repo, >> Windows Vista x64 using a different Linux repo with the same HEAD on >> NTFS and msysgit, numbers are the elapsed time in seconds, best of five >> runs): >> >> Ubuntu Fedora Windows >> v1.6.2-rc2 8.14 8.16 9.236 >> v1.6.2-rc2+[1-4] 2.43 2.45 2.995 >> v1.6.2-rc2+[1-4]+memmem 1.31 1.25 2.917 >> v1.6.2-rc2+[1-3]+memmem 1.51 1.16 8.455 >> >> Ubuntu has glibc 2.8, while Fedora 10 has glibc 2.9, with a new and more >> efficient memmem() implementation. On Windows, we use our own naive >> memmem() implementation. > > Yeah, what does glibc use these days? Some variant of Boyer-Moore?
No, the algorithm is called Two Way, which, unlike Boyer-Moore, only needs constant space. The implementation seems to originate from this bug:
http://sourceware.org/bugzilla/show_bug.cgi?id=5514
And the algorithm is documented here:
http://www-igm.univ-mlv.fr/~lecroq/string/node26.html
René