Я решил найти скорости двух функций:
- strcmp - стандартная функция сравнения, определенная в string.h
- xstrcmp- Функция, которая имеет одинаковые параметры и делает то же самое, только что я ее создал.
Вот моя функция xstrcmp:
int xstrlen(char *str)
{
int i;
for(i=0;;i++)
{
if(str[i]=='\0')
break;
}
return i;
}
int xstrcmp(char *str1, char *str2)
{
int i, k;
if(xstrlen(str1)!=xstrlen(str2))
return -1;
k=xstrlen(str1)-1;
for(i=0;i<=k;i++)
{
if(str1[i]!=str2[i])
return -1;
}
return 0;
}
Я не хотел зависеть от strlen, так как я хочу, чтобы все было определено пользователем.
Итак, я нашел результаты. strcmp выполнило 364 сравнения за миллисекунду, а мой xstrcmp выполнил всего 20 сравнений за миллисекунду (по крайней мере, на моем компьютере!)
Может кто-нибудь сказать, почему это так? Что делает функция xstrcmp сделать так быстро?