I have read that use of strlen
is more expensive than such testing like this:
We have a string x
100 characters long.
I think that
for (int i = 0; i < strlen(x); i++)
is more expensive than this code:
for (int i = 0; x[i] != '\0'; i++)
Is it true? Maybe the second code will not work in some situation so is it better to use the first?
Will it be better with the below?
for (char *tempptr = x; *tempptr != '\0'; tempptr++)
for (int i=0;i<strlen(x);i++)
This code is calling strlen(x)
every iteration. So if x
is length 100, strlen(x)
will be called 100 times. This is very expensive. Also, strlen(x)
is also iterating over x
every time in the same way that your for loop does. This makes it O(n^2) complexity.
for (int i=0;x[i]!='\0';i++)
This code calls no functions, so will be much quicker than the previous example. Since it iterates through the loop only once, it is O(n) complexity.