Christian Seiler: IP zeilenweise auslesen

Beitrag lesen

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