Hallo the-FoX,
der Unterschied zwischen einfachem und doppeltem Hochkommata liegt in der Ausführungszeit.
Ich habe das auch lange geglaubt. Ich wollte das nun einfach mal testen. Allerdings lässt sich kein merklicher Unterschied feststellen; ich gehe davon aus, dass die Unterschiede sowieso für das Starten des PHP-Interpreters 'draufgehen', der jedes Mal eine etwas andere Menge Zeit braucht. [1]
Hier mal die Meßergebnisse: (jeweils 4 durchläufe und die Durschnittswerte genommen)
<?php
for ($i = 0; $i < 1000*1000; $i++) {
$string = "blub!!!!!!!!!!!!!\n\n\n";
}
?>
Ergibt:
real 0m1.798s
user 0m1.800s
sys 0m0.002s
<?php
for ($i = 0; $i < 1000*1000; $i++) {
$string = 'blub!!!!!!!!!!!!!\n\n\n';
}
real 0m1.816s
user 0m1.798s
sys 0m0.002s
(mir ist klar, dass im zweiten Beispiel \n nicht ersetzt wird, ich wollte nur die zu verarbeitenden Daten gleich halten)
Falls jemand jetzt argumentiert, der Benchmark sei nicht akzeptabel, weil ja nur das gleiche Stück Code immer wieder ausgeführt wird: Ich habe mal versucht, ein Script zu schreiben, das eine Million PHP-Zeilen, die nur
$string = "Hallo\n";
bzw.
$string = 'Hallo\n';
lauten, schreibt. Beim Ausführen der erzeugten Datei musste ich erst mein Memory Limit hochschrauben, danach ist PHP mit einer "Segmentation Fault" abgestürzt. Ich musste die Anzahl an Zeilen auf 10000 reduzieren, damit PHP in diesem Fall überhaupt durchgelaufen ist. Da stellte ich dann auch keinen wirklichen Unterschied fest. Und wer mehr als 10000 Strings auf einmal in einem PHP-Script braucht, dürfte andere Performance-Bremsen als die Strings selbst haben.
Ich habe den Benchmark mit der Schleife auch 10 Millionen mal durchgeführt und es war immernoch kein wirklicher Unterschied festzustellen.
Achja, PHP-Version: 4.3.2, Debian GNU/Linux.
Viele Grüße,
Christian
[1] Der PHP-Interpreter beim Verarbeiten einer leeren PHP-Datei schwankt bei mir in der Ausführungszeit zwischen minimal
real 0m0.038s
user 0m0.020s
sys 0m0.000s
und maximal
real 0m0.042s
user 0m0.040s
sys 0m0.020s
(wenn auf dem Rechner sonst keine Last herrscht) Damit ließen sich die Ausführungsdifferenzen erklären.