Mailinglisten-Archive |
> * Thomas Langfeld wrote:
> > Und wenn ich die Wahl habe zwischen einem 3-Zeiler, der vielleicht im
> > Hinteren-Nachkomma-Tausendstel-Mili-Sekunden-Bereich schneller ist und
> einem
> > Einzeiler, um ein Problem zu lösen, brauche ich wirklich nicht lange zu
> > überlegen ...
>
> Es ist ineffizient, einen regulären Ausdruck zu verwenden, wenn
> gar keiner nötig ist; genau so wie es nicht nötig ist, 3x str_replace()
> zu verwenden, da folgendes bereits ausreichend ist:
> $txt = str_replace(array('\r\n','\r','\n'),'<br>',$txt);
>
naja mir ist eine Zeile Code auch lieber, als 3 Zeilen. Die
Frage ist halt, was wie lange braucht und ob es eine Rolle
spielt:
C:\prog\php_rfc\sap_mitarbeiter_emailadressen\test>test.php
Test 1 (3 x str_replace) 16.0978940725326538 Sekunden
Test 2 (str_replace mit Array) 13.9548659324645996 Sekunden
Test 3 (preg_replace) 63.1338710784912109 Sekunden
Die Testdatei:
13.03.2002 15:23 69.965.031 test.txt
Programm:
<?
function getmicrotime(){
list($usec, $sec) = explode(" ",microtime());
return ((float)$usec + (float)$sec);
}
$time_start = getmicrotime();
$f = fopen('test.txt','r');
while (!feof($f)) {
$b = fgets($f, 4096);
$b = str_replace ("\r\n", "\n" , $b);
$b = str_replace ("\r" , "\n" , $b);
$b = str_replace ("\n" , '<br>', $b);
}
fclose($f);
$time_end = getmicrotime();
$time = sprintf('%.16f', $time_end - $time_start);
echo 'Test 1 (3 x str_replace) ' . $time . ' Sekunden'."\n";
$time_start = getmicrotime();
$f = fopen('test.txt','r');
while (!feof($f)) {
$b = fgets($f, 4096);
$b = str_replace(array('\r\n','\r','\n'),'<br>',$b);
}
fclose($f);
$time_end = getmicrotime();
$time = sprintf('%.16f', $time_end - $time_start);
echo 'Test 2 (str_replace mit Array) ' . $time . ' Sekunden'."\n";
$time_start = getmicrotime();
$f = fopen('test.txt','r');
while (!feof($f)) {
$b = fgets($f, 4096);
$b = preg_replace('/\r\n|\r|\n/', '<br>', $b);
}
fclose($f);
$time_end = getmicrotime();
$time = sprintf('%.16f', $time_end - $time_start);
echo 'Test 3 (preg_replace) ' . $time . ' Sekunden'."\n";
?>
So, jetzt kann jeder selbst entscheiden was die beste
Lösung ist, ich denke 3 x str_replace ist doch besser ;-)
Grüße, Mathias
php::bar PHP Wiki - Listenarchive