Skip site navigation (1)Skip section navigation (2)
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>