Is using strlen() in the loop condition slower than just checking for the null character?

前端 未结 8 812
鱼传尺愫
鱼传尺愫 2020-12-07 00:39

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<

8条回答
  •  谎友^
    谎友^ (楼主)
    2020-12-07 01:12

    for (int i=0;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.

提交回复
热议问题