cvs commit: src/lib/libc/string strcspn.c strspn.c src/sys/libkern strspn.c

David Schultz das at FreeBSD.ORG
Sat Apr 2 10:57:08 PST 2005


On Sat, Apr 02, 2005, David Schultz wrote:
> das         2005-04-02 18:52:44 UTC
> 
>   FreeBSD src repository
> 
>   Modified files:
>     lib/libc/string      strcspn.c strspn.c 
>     sys/libkern          strspn.c 
>   Log:
>   Replace the current strspn() and strcspn() with significantly faster
>   implementations inspired by the ones in DragonFly.  Unlike the
>   DragonFly versions, these have a small data cache footprint, and my
>   tests show that they're never slower than the old code except when the
>   charset or the span is 0 or 1 characters.  This implementation is
>   generally faster than DragonFly until either the charset or the span
>   gets in the ballpark of 32 to 64 characters.

BTW, anyone know a good reason why we have optimized string
functions (e.g. strcmp(), strcpy()) in libc, but not in libkern?
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.

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...


More information about the cvs-all mailing list