slackfan
König
Hallo,
ich habe zwei in PHP geschriebene Skripte. In denen eine Variable in einer For-Schleife auf eine Million hochgezählt wird. Einmal wird die Variable mit einer Konstante addiert und einmal mit einer Variable.
und
Jetzt habe ich das Phänomen, dass PHP auf meiner Kiste für das Skript mit Variable 0,262 bis 0,271 Sekunden braucht. Beim Skript mit Konstante sind es aber satte 0,392 bis 0,4 Sekunden. Das sind ja immerhin ~50% mehr Rechenzeit!
Mich würde interessieren, wo die herkommen? Liegt es daran, dass Konstanten nicht mit einem $ eingeleitet werden und der Parser/Interpiler deshalb länger braucht, um die Konstante zu identifizieren?
cu
ich habe zwei in PHP geschriebene Skripte. In denen eine Variable in einer For-Schleife auf eine Million hochgezählt wird. Einmal wird die Variable mit einer Konstante addiert und einmal mit einer Variable.
PHP:
#!/usr/bin/php
<?php
define(FOO, 1);
$bar = 0;
$start = microtime(true);
for($i = 0; $i < 1000000; $i++) {
$bar += FOO;
}
$end = microtime(true);
$duration = $end - $start;
echo "\n".$duration."\n";
?>
und
PHP:
#!/usr/bin/php
<?php
$foo = 1;
$bar = 0;
$start = microtime(true);
for($i = 0; $i < 1000000; $i++) {
$bar += $foo;
}
$end = microtime(true);
$duration = $end - $start;
echo "\n".$duration."\n";
?>
Jetzt habe ich das Phänomen, dass PHP auf meiner Kiste für das Skript mit Variable 0,262 bis 0,271 Sekunden braucht. Beim Skript mit Konstante sind es aber satte 0,392 bis 0,4 Sekunden. Das sind ja immerhin ~50% mehr Rechenzeit!
Mich würde interessieren, wo die herkommen? Liegt es daran, dass Konstanten nicht mit einem $ eingeleitet werden und der Parser/Interpiler deshalb länger braucht, um die Konstante zu identifizieren?
cu