Hallo eddi,
Fatal error: Call to undefined function preg_replace() in Command line code on line 1
nicht nur die Performance ist ein Kriterium, Perl-kompatible Reguläre Ausdrücke sind zuallererst Funktionen eines nicht zwingend aktiviertem Moduls...
Ja und? Wer die Extension nicht aktiviert, ist IMHO selbst Schuld. Es gibt bis auf wenige Szenarien (PHP auf Embedded-Systemen z.B.) absolut keinen Grund, die nicht zu aktivieren. Und zur Performance: Die PCRE-Lösung ist zumindest auf meinem System schneller:
---------------------- test1 -----------------------------
for ($ctr = 0; $ctr < 1000000; $ctr++) {
$IPs='';
$x=explode("\n",$rohIPs);
for($i=0;$i<count($IPs);$i++){
$t=explode(' ',$x[$i],2);
$IPs.="\n".$t[0];
}
}
---------------------- test1 -----------------------------
---------------------- test2 -----------------------------
for ($ctr = 0; $ctr < 1000000; $ctr++) {
$IPs=preg_replace('/ .+/', '', $rohIPs);
}
---------------------- test2 -----------------------------
Verwendet habe ich die gleichen Eingangsdaten, wie sie im Ausgangsposting angegeben wurden.
Messdaten Test1:
real 0m5.373s
user 0m5.256s
sys 0m0.072s
Messdaten Test2:
real 0m4.665s
user 0m4.580s
sys 0m0.048s
Ich denke, das ist recht eindeutig. Verwundert mich übrigens wenig, die PCRE-Engine ist in C geschrieben, während bei der anderen Lösung eine ganze Menge Kram in PHP hin- und hergeschoben wird.
Viele Grüße,
Christian
"I have always wished for my computer to be as easy to use as my telephone; my wish has come true because I can no longer figure out how to use my telephone." - Bjarne Stroustrup