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