Marc Reichelt: Geschwindigkeitstest

Beitrag lesen

Hallo Twilo,

folgende Zeile finde ich z.B. viel übersichlicher
echo '<?xml version="1.0" encoding="UTF-8"?>';

  1. muss man dort die " nicht escapen
  2. ist diese Anweisung sogar ein paar Millisekunden schneller ;-)

Wie Ashura schon gesagt hat, fehlt bei dir ein Zeichen für eine neue Zeile.
Fragt sich nun, was schneller ist:

echo '<?xml version="1.0" encoding="UTF-8" ?>'."\n";
oder
echo "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n";

Mit der Übersichtlichkeit hast du Recht, die Geschwindigkeit müsste man mal automatisiert ermitteln lassen. Und das habe ich jetzt gerade auch mal machen lassen, folgendes Skript:

<?php  
  
 // Performance-Test  
  
 header("Content-type: text/plain");  
 echo "Starte Geschwindigkeitstest...\n";  
  
 $times = 1000000;  
  
  
 // erster Durchlauf  
  
 $begintime = explode(" ", microtime());  
 $begintime = (float)$begintime[0] + (float)$begintime[1];  
  
 for($i=0; $i<$times; $i++)  
 {  
  echo '<?xml version="1.0" encoding="UTF-8" ?>'."\n";  
 }  
  
 $endtime = explode(" ", microtime());  
 $endtime = (float)$endtime[0] + (float)$endtime[1];  
  
 $firsttime = $endtime - $begintime;  
  
  
 // zweiter Durchlauf  
  
 $begintime = explode(" ", microtime());  
 $begintime = (float)$begintime[0] + (float)$begintime[1];  
  
 for($i=0; $i<$times; $i++)  
 {  
  echo "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n";  
 }  
  
 $endtime = explode(" ", microtime());  
 $endtime = (float)$endtime[0] + (float)$endtime[1];  
  
 $secondtime = $endtime - $begintime;  
  
  
  
 // Ausgabe  
  
 echo "Erster Durchlauf:  $firsttime Sekunden\n";  
 echo "Zweiter Durchlauf: $secondtime Sekunden\n";  
 echo "Prozentual (1/2):  ". $firsttime/$secondtime ."\n";  
  
?>

Ich habe das Skript mehrfach laufen lassen, aber der Mittelwert des prozentualen Anteils bleibt größer als 1, was bedeutet dass die erste Methode (deine) länger braucht als meine:

---schnipp---
marc@linux:~> for (( I=1; $I <= 10; I++ )); do  php speedtest.php | grep Prozentual; done
Prozentual (1/2):  1.07741338453
Prozentual (1/2):  1.06501519787
Prozentual (1/2):  1.07005052912
Prozentual (1/2):  1.06694041504
Prozentual (1/2):  1.07399288338
Prozentual (1/2):  1.0689044657
Prozentual (1/2):  1.06863608119
Prozentual (1/2):  0.98358096932
Prozentual (1/2):  1.1488245319
Prozentual (1/2):  1.06209438915
marc@linux:~>
---schnapp---

Damit wäre dein zweites Argument wiederlegt - das erste bleibt natürlich unumstritten! ;-)

Bis dann!

Marc Reichelt || http://www.marcreichelt.de/

--
Linux is like a wigwam - no windows, no gates and an Apache inside!
Selfcode: ie:{ fl:| br:> va:} ls:< fo:} rl:( n4:( ss:) de:> js:| ch:? sh:| mo:) zu:)
http://emmanuel.dammerer.at/selfcode.html