Comment écrire une meilleure fonction strlen?

Je suis la lecture de "l'Écriture du Code Volume 2" et il montre les suivantes strlen impelementation:

int myStrlen( char *s )
{
    char *start;
    start = s;
    while( *s != 0 )
    {
        ++s;
    }
    return s - start;
}

le livre dit que cette mise en œuvre est typique pour un inexpérimenté C programmeur. J'ai été le codage en C depuis 11 ans, et je ne vois pas comment écrire une fonction mieux que cela en C(je pense à l'écriture chose de mieux dans l'assemblage). Comment est-il possible d'écrire du code mieux que cela en C? J'ai regardé la bibliothèque standard de mise en œuvre de la fonction strlen dans la glibc, et je ne pouvais pas comprendre la plupart de la partie. Où puis-je trouver de meilleures informations sur la façon d'écrire très optimisé le code?

Êtes-vous sûr que c'est une question d'optimisation? Ou tout simplement la norme de problème de sécurité?
Ne croyez pas tout ce que vous lisez. Cette fonction est rapide assez.
il a été question d'optimisation.
Une fois, j'ai écrit strlen() en assembleur pour un système i386 qui a utilisé le CPU chaîne (REP) opcodes, et a couru 6x plus rapide que le code C optimisé.
J'avais objet de la caste des ptrdiff_t à int oui, vous n'êtes probablement pas en passant de 2 go de chaînes à strlen() mais c'est toujours bâclé. Aussi le compilateur peut produire un meilleur code de int i=0; while(s[i]) i++; return i; parce qu'il peut en dire plus sur ce que vous faites avec le pointeur (c'est à dire qu'il peut analyser cette boucle de mieux en mieux).

OriginalL'auteur Victor | 2011-07-05