Comment calculer la longueur d'une chaîne de caractères en C de manière efficace?

Comment calculer la longueur d'une chaîne de caractères en C efficacement (dans le temps)?

Droit maintenant, je suis en train de faire:

int calculate_length(char *string) {
    int length = 0;
    while (string[length] != '
int calculate_length(char *string) {
int length = 0;
while (string[length] != '\0') {
length++;
}
return length;
}
'
) { length++; } return length; }

Mais c'est très lent par rapport à strlen() par exemple, est-il un autre moyen de le faire?

Grâce.

EDIT: je travaille dans un autoportant de l'environnement, je ne suis pas autorisés à utiliser de lib externe, y compris "de la chaîne.h".

  • Pourquoi ne pas utiliser strlen alors? Ou est-ce un exercice?
  • Ce n'est pas un exercice, l'environnement dans lequel je travaille ne m'autorise pas à inclure d'autres "libs", y compris "de la chaîne.h" donc, je dois mettre en œuvre et vous voudriez qu'il soit aussi efficace que possible tout en étant maintainble.
  • Vous souhaitez peut-être modifier votre message original de mentionner que vous êtes dans un autoportant de l'environnement.
  • Prendre en compte le fait que le std bibliothèque peut aussi être compilé avec les optimisations du compilateur activé et que votre code n'est pas.
  • Il y a d'excellentes réponses ici, mais gardez à l'esprit que c'est de la micro-optimisation, et non tous les programmeurs à comprendre l'utilisation et l'importance de la macro-optimisation. Voici un exemple de 40x speedup parfaitement OK-la recherche de code: stackoverflow.com/questions/926266/...