Date: Tue, 14 Feb 2012 19:25:14 +0100 From: Bernard van Gastel <bvgastel@bitpowder.com> To: hackers@freebsd.org Subject: memmem small optimalisation Message-ID: <1BDAF8C6-66A5-4F4F-A2CD-3928A0B10D48@bitpowder.com>
next in thread | raw e-mail | index | archive | help
--Apple-Mail=_A1EFFEDA-2AAF-4165-9F13-C572310F6928 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=us-ascii Hi all, I was looking through the sources of memmove at [1], and saw a (very) = small optimization opportunity. The 'memcmp' also compares the current = character, but the current character is already checked (first part of = the condition). As we already know the size of the string is greater as = 1 (it is checked before the loop), it is possible to replace the memcmp = with (possible doing the decrease of s_len once outside the loop): memcpy(&cur[1], &cs[1], s_len-1) Am I missing something? E.g. is readability more important as speed? = This made me wonder what generally the tradeoff is that has to be taken = into account in these cases? Regards, Bernard [1] = http://www.freebsd.org/cgi/cvsweb.cgi/src/lib/libc/string/memmem.c?rev=3D1= .2 , excerpt below: for (cur =3D (char *)cl; cur <=3D last; cur++) if (cur[0] =3D=3D cs[0] && memcmp(cur, cs, s_len) =3D=3D 0) return cur; --- Bernard van Gastel Bit Powder RSS Junkie? Download the app with push notifications for Android: = https://market.android.com/details?id=3Dcom.bitpowder.rssjunkie= --Apple-Mail=_A1EFFEDA-2AAF-4165-9F13-C572310F6928--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1BDAF8C6-66A5-4F4F-A2CD-3928A0B10D48>