Ich bin auf diesen Code gestoßen...
if(isset($string[255])) {
// too long
}
isset() ist zwischen 6 und 40 schneller als
if(strlen($string) > 255) {
// too long
}
Der einzige Nachteil von isset() ist, dass der Code unklar ist - wir können nicht auf Anhieb erkennen, was getan wird (siehe Pekkas Antwort). Wir können isset() in eine Funktion einbinden, z.B. strlt($string,255), aber dann verlieren wir die Geschwindigkeitsvorteile von isset().
Wie kann man die schnellere Funktion isset() verwenden und gleichzeitig die Lesbarkeit des Codes beibehalten?
EDIT : Test zum Nachweis der Geschwindigkeit http://codepad.org/ztYF0bE3
strlen() over 1000000 iterations 7.5193998813629
isset() over 1000000 iterations 0.29940009117126
EDIT2: hier ist, warum isset() schneller ist
$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!';
}
Dies ist schneller als die Verwendung von strlen(), weil " der Aufruf einer Funktion teurer ist als die Verwendung eines Sprachkonstrukts." http://www.phpreferencebook.com/tips/use-isset-instead-of-strlen/
EDIT3 : Mir wurde immer beigebracht, dass ich mich für die Mirco-Optimierung interessiere. Wahrscheinlich, weil ich zu einer Zeit unterrichtet wurde, als die Ressourcen auf Computern winzig waren. Ich bin offen für die Idee, dass es vielleicht nicht wichtig ist, es gibt einige gute Argumente dagegen in den Antworten. Ich habe eine neue Frage zu diesem Thema gestartet... https://stackoverflow.com/questions/6983208/is-micro-optimisation-important-when-coding