Re: weird strncmp usage?
- From
Petr Baudis <pasky@suse.cz>
- Date
- Nov 2, 2006, 11:04 UTC
- Message-ID
- <20061102110450.GK20017@pasky.or.cz>
- In-Reply-To
- <45494D84.2060402@shadowen.org>
Dear diary, on Thu, Nov 02, 2006 at 02:44:36AM CET, I got a letter where Andy Whitcroft <apw@shadowen.org> said that...
Show 25 quoted lines
> Han-Wen Nienhuys wrote:
> >
> > Hi,
> >
> > the git source seems full of calls similar to
> >
> > strncmp (x, "constant string", 15)
> >
> > is there a reason not to use something like
> >
> > int
> > strxmp (char const *x, char const *y)
> > {
> > return strncmp (x, y, strlen (y));
> > }
> >
> > everywhere?
>
> If you are doing these a _lot_ then there is a significant additional
> cost to using strlen on a constant string.
>
> That said if you know its constant you can also use sizeof("foo") and
> that is done at compile time. Something like:
>
> #define strxcmp(x, y) strncmp((x), (y), sizeof((y))At least in the #define, reasonable compilers should optimize out strlen("foo"). Hopefully as well if you would make strxmp() inlinable though I'm not so sure there.
--
Petr "Pasky" Baudis
Stuff: http://pasky.or.cz/
#!/bin/perl -sp0777i<X+d*lMLa^*lN%0]dsXx++lMlN/dsM0<j]dsj
$/=unpack('H*',$_);$_=`echo 16dio\U$k"SK$/SM$n\EsN0p[lN*1