Re: [PATCH 1/1] lib: small update for strlen, strnlen, use less cpu instructions

From: Joe Perches
Date: Tue Jun 16 2015 - 18:16:56 EST


On Tue, 2015-06-16 at 13:50 -0500, Orestes Leal Rodriguez wrote:
> Very small update to strlen and strnlen that now use less cpu
> instructions by using a counter to avoid the memory addresses
> substraction to find the length of the string.
[]
> @@ -418,12 +422,13 @@ EXPORT_SYMBOL(strlen);
> */
> size_t strnlen(const char *s, size_t count)
> {
> - const char *sc;
> + size_t sz = 0;
>
> - for (sc = s; count-- && *sc != '\0'; ++sc)
> - /* nothing */;
> - return sc - s;
> + for (; count-- && *s++ != '\0'; sz++)
> + /* empty */;
> + return sz;

That's one subtraction at end-of-string vs
a register increment for each non-zero byte.

smaller isn't worth slower.

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/