This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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


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.

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,


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]