Wendet man jedoch Geschwindigkeitsmessungen beim PRES mit diesen Strukturen an, sieht es wieder ganz anders aus:
bekanntlich ist das original format wie folgt:
CODE:
if ...
elseif ( PRES_OKT == 8 ) $forbiddenIPs=' 8.4.9.191 8.6.95.148 ... ';
...
Wenn jetzt die Frage aufkommt, warum Strings? -> Das liegt daran dass PHP 4 bis PHP 5.1.2 ca. stolze 10mal langsamer ist, wenn man stattdessen Arrays (selbst bei Zahlenvergleich!) verwendet.
Die if/elseif Struktur benoetigt bei 100.000 Runs
if: 0.240842819214
Baut man die Verzweigungsstruktur auf den ternaeren Operator um, kann das so aussehen:
CODE:
(PRES_OKT == 4 ? $ips = ' 4.x.y.z ... ' :
...usw...
(PRES_OKT == 255 ? $ips = ' 255.x.y.z ... ' : $ips = ''
))))))))))))...)))))))))
Doch dies ist von der Laufzeit schlechter, bei 100.000 Runs
ternaer: 0.380263090134
Was noch bleibt ist switch case. Das kann so aussehen:
CODE:
switch (PRES_OKT) {
case 4: $forbiddenIPs = ' ... '; break;
case 8: $forbiddenIPs = ' ... '; break;
..
}
das spart zwar im Schnitt ca. 6 * 137 Zeichen Quelltext, ist aber nach Messungen geringfuegig langsamer: 100.000 runs
case: 0.273416042328
Was bleibt: ich haette mal wieder Lust auf PHP-bashing