Je suis tombé sur ce code...
if(isset($string[255])) {
// too long
}
isset() est entre 6 et 40 fois plus rapide que
if(strlen($string) > 255) {
// too long
}
Le seul inconvénient de isset() est que le code n'est pas clair - on ne peut pas dire tout de suite ce qui est fait (voir la réponse de pekka). Nous pouvons envelopper isset() dans une fonction, par exemple strlt($string,255), mais nous perdons alors les avantages de isset() en termes de vitesse.
Comment utiliser la fonction isset(), plus rapide, tout en conservant la lisibilité du code ?
EDIT : test pour montrer la vitesse http://codepad.org/ztYF0bE3
strlen() over 1000000 iterations 7.5193998813629
isset() over 1000000 iterations 0.29940009117126
EDIT2 : voici pourquoi isset() est plus rapide
$string = 'abcdefg';
var_dump($string[2]);
Output: string(1) “c”
$string = 'abcdefg';
if (isset($string[7])){
echo $string[7].' found!';
}else{
echo 'No character found at position 7!';
}
Cette méthode est plus rapide que l'utilisation de strlen() car " l'appel à une fonction est plus coûteux que l'utilisation d'une construction du langage". http://www.phpreferencebook.com/tips/use-isset-instead-of-strlen/
EDIT3 : On m'a toujours appris à m'intéresser à la mirco-optimisation. Probablement parce que j'ai été enseigné à une époque où les ressources sur les ordinateurs étaient minuscules. Je suis ouvert à l'idée que cela puisse ne pas être important, il y a quelques bons arguments contre cela dans les réponses. J'ai commencé une nouvelle question pour explorer ce sujet... https://stackoverflow.com/questions/6983208/is-micro-optimisation-important-when-coding