Frage

Gibt es eine Geschwindigkeitsdifferenz zwischen, sagen wir:

$ newstring = "$ a und $ b erlosch $ c, um zu sehen";

und

$ newstring = $ a. " und " . $ B. „Ging, um zu sehen“. $ C;

und wenn ja, warum?

War es hilfreich?

Lösung

Je auf der PHP-Version, variiert sie, um wie viel die zweite ist schneller, wenn Sie es schreiben: $newstring = $a . ' and ' . $b . ' went out to see ' . $c;

PHP ist sehr inkonsistent von Version zu Version und bauen zu bauen, wenn es um Leistung geht, können Sie es für sich selbst zu testen. Was nees zu sagen ist, dass es hängt auch von der Art der $a, $b und $c, wie Sie unten sehen können.

Wenn Sie " verwenden, PHP den String parst, wenn es zu sehen ist keine Variable / Platzhalter in der es verwendet wird, aber wenn man nur ' verwenden PHP behandelt es als eine einfache Zeichenfolge ohne weitere Verarbeitung. So sollte im Allgemeinen ' schneller sein. Zumindest in der Theorie. In der Praxis Sie muss Test.


Ergebnisse (in Sekunden):

a, b, c are integers:
all inside "     : 1.2370789051056
split up using " : 1.2362520694733
split up using ' : 1.2344131469727

a, b, c are strings:
all inside "     : 0.67671513557434
split up using " : 0.7719099521637
split up using ' : 0.78600907325745  <--- this is always the slowest in the group. PHP, 'nough said

Mit diesem Code mit Zend Server CE PHP 5.3:

<?php

echo 'a, b, c are integers:<br />';
$a = $b = $c = 123;

$t = xdebug_time_index();
for($i = 1000000; $i > 0; $i--)
    $newstring = "$a and $b went out to see $c";
$t = xdebug_time_index() - $t;
echo 'all inside " : ', $t, '<br />';

$t = xdebug_time_index();
for($i = 1000000; $i > 0; $i--)
    $newstring = $a . " and " . $b . " went out to see " . $c;
$t = xdebug_time_index() - $t;
echo 'split up using " : ', $t, '<br />';

$t = xdebug_time_index();
for($i = 1000000; $i > 0; $i--)
    $newstring = $a . ' and ' . $b . ' went out to see ' . $c;
$t = xdebug_time_index() - $t;
echo 'split up using \' : ', $t, '<br /><br />a, b, c are strings:<br />';

$a = $b = $c = '123';

$t = xdebug_time_index();
for($i = 1000000; $i > 0; $i--)
    $newstring = "$a and $b went out to see $c";
$t = xdebug_time_index() - $t;
echo 'all inside " : ', $t, '<br />';

$t = xdebug_time_index();
for($i = 1000000; $i > 0; $i--)
    $newstring = $a . " and " . $b . " went out to see " . $c;
$t = xdebug_time_index() - $t;
echo 'split up using " : ', $t, '<br />';

$t = xdebug_time_index();
for($i = 1000000; $i > 0; $i--)
    $newstring = $a . ' and ' . $b . ' went out to see ' . $c;
$t = xdebug_time_index() - $t;
echo 'split up using \' : ', $t, '<br />';

?>

Andere Tipps

Es wird wahrscheinlich eine Geschwindigkeitsdifferenz sein, da es zwei verschiedene Syntaxen ist. Was Sie brauchen, ist zu fragen, ob der Unterschied wichtig ist. In diesem Fall, nein, ich glaube nicht, dass Sie besorgt sein müssen. Der Unterschied wäre zu vernachlässigen sein.

Ich würde Ihnen empfehlen, zu tun, was am meisten Sinn für Sie visuell macht. „$a and $b went out to see $c“ kann ein wenig verwirrend sein, wenn es zu betrachten. Wenn Sie diesen Weg gehen wollen, würde ich vorschlagen, kraus Klammern um Ihre Variablen. „{$a} and {$b} went out to see {$c}

Ich habe eine schnelle Benchmark, und wie andere gesagt haben, waren die Ergebnisse sehr uneinheitlich. Ich habe nicht bemerkt jeden Performance-Gewinn einfache Anführungszeichen statt Doppel diejenigen verwenden. Meine Vermutung ist, dass es kommt alles auf Präferenz.

Sie können auf eine Art von Angebot für Ihre Codierung Stil halten wollen, und wenn Sie das tun, wählen Sie doppelte Anführungszeichen. Die Ersatz-Funktion ist praktisch, häufiger als man denken würde.

Ich habe den Benchmark-Code auf Github .

Wenn Sie sind besorgt über die Geschwindigkeit der Zeichenfolge Verkettungen auf dieser Ebene, verwenden Sie die falsche Sprache. Kompilieren eine Anwendung in C für diesen Anwendungsfall und rufen Sie, dass in Ihrem PHP-Skript, wenn das wirklich ist ein Engpass.

Ja, es ist aber der Unterschied ist sehr unbedeutend zwischen

$newstring = "$a and $b went out to see $c";

und

$newstring = $a . " and " . $b . " went out to see " . $c;

Wenn Sie verwenden:

$newstring = $a . ' and ' . $b . ' went out to see ' . $c;

Der Unterschied wäre etwas größer (aber wahrscheinlich noch sehr gering), ist der Grund dafür ist, wenn ich mich recht erinnere (ich das falsch sein kann), dass die PHP-Scans und analysiert die Inhalte innerhalb von doppelten Anführungszeichen für Variablen und spezielle Zeichen (\ t, \ n und so weiter), und wenn einfache Anführungszeichen verwenden markiert sie nicht für Variablen oder Sonderzeichen nicht analysiert werden, so kann es zu einer leichten Erhöhung der Geschwindigkeit sein.

Warum Sie es nicht testen, und den Unterschied vergleichen? Zahlen lügen nicht, wenn Sie feststellen, dass eine als das andere besser abschneidet, dann sollten Sie sich fragen, warum.

Es gibt keinen Unterschied, period. ;)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top