#include <stdio.h>
int main(int argc, const char *argv[])
{
char *str = "87a8dfs4dsfdjskl\
afdsjklsadfjkl;kjassfdjklasdfkl\
djfffffffffffffffffffffffffdfdj\
dfjasdddddddddddddddddddddddddd\
djas;lkeafidjfdkadsjadfsfdajkddk\
fdajslllllllllllllafsdllllljakdsf\
fdjjjjjjjjjjjffffffffffffffff";
int len;
int i;
for (i = 0; i < 10000000; i++)
len = mystrlen(str);
printf("%d\n", len);
return 0;
}
#if 0
int mystrlen(const char *str)
{
const char *p = str;
while (*p != '\0')
p++;
return p - str;
}
#else
int mystrlen(const char *str)
{
register const int *p = (const int *)str;
register int value;
value = *p;
while ((value & 0xff) && (value & 0xff00)
&& (value & 0xff0000) && (value & 0xff000000)) {
p++;
value = *p;
}
if ((value & 0xff) == 0)
return (const char *)p - str;
else if ((value & 0xff00) == 0)
return (const char *)p - str + 1;
else if ((value & 0xff0000) == 0)
return (const char *)p - str + 2;
else
return (const char *)p - str + 3;
}
#endif
C中strlen函数寄存器内实现
最新推荐文章于 2024-01-26 22:14:03 发布