[3/*] Use strchrnul for strcspn (x, "c")

Message ID 20150524154017.GA18976@domone
State New, archived
Headers

Commit Message

Ondrej Bilka May 24, 2015, 3:40 p.m. UTC
  A loop there is clearly suboptimal. We improve performance by using
strchrnul equivalent. 

OK to commit?

	* string/bits/string2.h (__strcspn_c1): Optimize with __strchrnul.
  

Patch

diff --git a/string/bits/string2.h b/string/bits/string2.h
index a595c74..2fe67b3 100644
--- a/string/bits/string2.h
+++ b/string/bits/string2.h
@@ -277,10 +277,7 @@  __STRING_INLINE size_t __strcspn_c1 (const char *__s, int __reject);
 __STRING_INLINE size_t
 __strcspn_c1 (const char *__s, int __reject)
 {
-  size_t __result = 0;
-  while (__s[__result] != '\0' && __s[__result] != __reject)
-    ++__result;
-  return __result;
+  return __strchrnul (__s, __reject) - __s;
 }
 
 __STRING_INLINE size_t __strcspn_c2 (const char *__s, int __reject1,