Date: Sun, 3 Apr 2005 16:55:53 +1000 (EST) From: Bruce Evans <bde@zeta.org.au> To: David Schultz <das@FreeBSD.org> Cc: cvs-all@FreeBSD.org Subject: Re: cvs commit: src/lib/libc/string strcspn.c strspn.csrc/sys/libkern strspn.c Message-ID: <20050403162709.Q30325@delplex.bde.org> In-Reply-To: <20050402185706.GA19208@VARK.MIT.EDU> References: <200504021852.j32IqjhR031587@repoman.freebsd.org> <20050402185706.GA19208@VARK.MIT.EDU>
index | next in thread | previous in thread | raw e-mail
On Sat, 2 Apr 2005, David Schultz wrote: > BTW, anyone know a good reason why we have optimized string > functions (e.g. strcmp(), strcpy()) in libc, but not in libkern? It is because str* functions are almost never used in the kernel. E.g., to a first approximation, strcmp() is only used for initialization. Even the non-string function for copying pathnames from user space (copyinstr()) rarely shows up in profiles. Standard C string functions are a few orders of magnitude less important than this. > In testing strcmp(s, s), I found that the libc version on i386 is > 11% faster when s has length 1 and 4% faster when s has length 400. That's surprisingly little for an "optimized" asm version versus an unoptimized C version. > The kernel has many consumers of these functions, but maybe their > performance is irrelevant in the grand scheme of things. > Certainly things like bcopy and bswap are more important... Except bswap() isn't important. It isn't even used in 4.4BSD-Lite2. BTW, amd64 doesn't have any "optimized" string functions in userland, though the "optimization" would actually be an optimization for things like bcopy() at least. Brucehome | help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20050403162709.Q30325>
