From: René Scharfe Date: Sat, 28 Feb 2009 18:15:46 GMT Subject: Re: [PATCH 3/4] diffcore-pickaxe: further refactor count_match() Message-ID: <49A97F52.4080405@lsrfire.ath.cx> In-Reply-To: <7vmyc6foj3.fsf@gitster.siamese.dyndns.org> Junio C Hamano schrieb: > René Scharfe 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é