PHP Variablen übergabe in welcher Form sinnvoll?
bearbeitet von Jörg ReinholzMoin!
> Die Rückschlüsse auf die Performance sind heute nicht mehr gültig (falls sie das überhaupt je waren). Auf <http://www.phpbench.com/> gibt es ein paar Benchmarks die diesem Mythos zumindest die Luft aus den Segeln nehmen sollten.
Tatsächlich!
------------
Ich habe mal selbst "gebenchmarkt". Die folgenden Ergebnisse mögen naturgemäß situationsbedingt leicht schwanken, sind aber von der Reihenfolge her reproduzierbar.
Skript:
-------
~~~php
<?php
$a = 'aaaaaaa';
$b = 'bbbbbbb';
$c = 'ccccccc';
$d = 'ddddddd';
define('M', 1000000);
define('NL', "\n");
ob_start();
$s = microtime(true);
for ($i=0; $i<M; $i++) {
echo $i, ' : ', $a, $b, $c, $d, NL;
}
ob_end_clean();
echo 'Komma: ', ( microtime(true) - $s), 's', NL;
ob_start();
$s = microtime(true);
for ($i=0; $i<M; $i++) {
echo $i . ' : ' . $a . $b . $c . $d . NL;
}
ob_end_clean();
echo 'Punkt: ', (microtime(true) - $s), 's', NL;
ob_start();
$s = microtime(true);
for ($i=0; $i<M; $i++) {
echo "$i : $a $b $c $d\n";
}
ob_end_clean();
echo 'String:' , (microtime(true) - $s) , 's', NL;
~~~
Tests:
------
1\. PHP 5.5.9-1ubuntu4.14 (cli) (built: Oct 28 2015 01:34:46)
~~~
fastix@trainer:/tmp$ php test.php
Komma: 0.57300615310669s
Punkt: 0.59544205665588s
String:0.53846502304077s
~~~
2\. HipHop VM 3.11.1 (rel) (hhvm)
~~~
fastix@trainer:/tmp$ hhvm test.php
Komma: 0.33236718177795s
Punkt: 0.21430087089539s
String:0.26826691627502s
~~~
3\. PHP 7.0.3-3+deb.sury.org~trusty+1 (cli) ( NTS ) auf einem Raspberry 2b+
Bitte beachten: Ein Armel ist definitiv langsamer als ein Intel oder AMD. Dafür zieht der aber auch nur ganz wenig Strom.
~~~
trainer@home:/tmp$ php /tmp/test.php
Komma: 2.8800621032715s
Punkt: 3.3124830722809s
String:2.4350960254669s
~~~
Ich bin tatsächlich überrascht, dass unter PHP 5.5.9 und7.0.3hhvm der concatenierte String `$i . ' : ' . $a . $b . $c . $d . NL` so schnell ist. Ganz überrascht hat mich dann der hphvmp7 mit dem schnellen "Stringbuilder" `"$i : $a $b $c $d\n"`.
Jörg Reinholz
> Die Rückschlüsse auf die Performance sind heute nicht mehr gültig (falls sie das überhaupt je waren). Auf <http://www.phpbench.com/> gibt es ein paar Benchmarks die diesem Mythos zumindest die Luft aus den Segeln nehmen sollten.
Tatsächlich!
------------
Ich habe mal selbst "gebenchmarkt". Die folgenden Ergebnisse mögen naturgemäß situationsbedingt leicht schwanken, sind aber von der Reihenfolge her reproduzierbar.
Skript:
-------
~~~php
<?php
$a = 'aaaaaaa';
$b = 'bbbbbbb';
$c = 'ccccccc';
$d = 'ddddddd';
define('M', 1000000);
define('NL', "\n");
ob_start();
$s = microtime(true);
for ($i=0; $i<M; $i++) {
echo $i, ' : ', $a, $b, $c, $d, NL;
}
ob_end_clean();
echo 'Komma: ', ( microtime(true) - $s), 's', NL;
ob_start();
$s = microtime(true);
for ($i=0; $i<M; $i++) {
echo $i . ' : ' . $a . $b . $c . $d . NL;
}
ob_end_clean();
echo 'Punkt: ', (microtime(true) - $s), 's', NL;
ob_start();
$s = microtime(true);
for ($i=0; $i<M; $i++) {
echo "$i : $a $b $c $d\n";
}
ob_end_clean();
echo 'String:' , (microtime(true) - $s) , 's', NL;
~~~
Tests:
------
1\. PHP 5.5.9-1ubuntu4.14 (cli) (built: Oct 28 2015 01:34:46)
~~~
fastix@trainer:/tmp$ php test.php
Komma: 0.57300615310669s
Punkt: 0.59544205665588s
String:0.53846502304077s
~~~
2\. HipHop VM 3.11.1 (rel) (hhvm)
~~~
fastix@trainer:/tmp$ hhvm test.php
Komma: 0.33236718177795s
Punkt: 0.21430087089539s
String:0.26826691627502s
~~~
3\. PHP 7.0.3-3+deb.sury.org~trusty+1 (cli) ( NTS ) auf einem Raspberry 2b+
Bitte beachten: Ein Armel ist definitiv langsamer als ein Intel oder AMD. Dafür zieht der aber auch nur ganz wenig Strom.
~~~
trainer@home:/tmp$ php /tmp/test.php
Komma: 2.8800621032715s
Punkt: 3.3124830722809s
String:2.4350960254669s
~~~
Ich bin tatsächlich überrascht, dass unter PHP 5.5.9 und
Jörg Reinholz
PHP Variablen übergabe in welcher Form sinnvoll?
bearbeitet von Jörg ReinholzMoin!
> Die Rückschlüsse auf die Performance sind heute nicht mehr gültig (falls sie das überhaupt je waren). Auf <http://www.phpbench.com/> gibt es ein paar Benchmarks die diesem Mythos zumindest die Luft aus den Segeln nehmen sollten.
Tatsächlich!
------------
Ich habe mal selbst "gebenchmarkt". Die folgenden Ergebnisse mögen naturgemäß situationsbedingt leicht schwanken, sind aber von der Reihenfolge her reproduzierbar.
Skript:
-------
~~~php
<?php
$a = 'aaaaaaa';
$b = 'bbbbbbb';
$c = 'ccccccc';
$d = 'ddddddd';
define('M', 1000000);
define('NL', "\n");
ob_start();
$s = microtime(true);
for ($i=0; $i<M; $i++) {
echo $i, ' : ', $a, $b, $c, $d, NL;
}
ob_end_clean();
echo 'Komma: ', ( microtime(true) - $s), 's', NL;
ob_start();
$s = microtime(true);
for ($i=0; $i<M; $i++) {
echo $i . ' : ' . $a . $b . $c . $d . NL;
}
ob_end_clean();
echo 'Punkt: ', (microtime(true) - $s), 's', NL;
ob_start();
$s = microtime(true);
for ($i=0; $i<M; $i++) {
echo "$i : $a $b $c $d\n";
}
ob_end_clean();
echo 'String:' , (microtime(true) - $s) , 's', NL;
~~~
Tests:
------
1\. PHP 5.5.9-1ubuntu4.14 (cli) (built: Oct 28 2015 01:34:46)
~~~
fastix@trainer:/tmp$ php test.php
Komma: 0.57300615310669s
Punkt: 0.59544205665588s
String:0.53846502304077s
~~~
2\. HipHop VM 3.11.1 (rel) (hhvm)
~~~
fastix@trainer:/tmp$ hhvm test.php
Komma: 0.33236718177795s
Punkt: 0.21430087089539s
String:0.26826691627502s
~~~
3\. PHP 7.0.3-3+deb.sury.org~trusty+1 (cli) ( NTS ) auf einem Raspberry 2b+
Bitte beachten: Ein Armel ist definitiv langsamer als ein Intel oder AMD. Dafür zieht der aber auch nur ganz wenig Strom.
~~~
trainer@home:/tmp$ php /tmp/test.php
Komma: 2.8800621032715s
Punkt: 3.3124830722809s
String:2.4350960254669s
~~~
Ich bin tatsächlich überrascht, dass unter PHP 5.5.9 und 7.0.3 derzusconcammtengiebaurte String `$i . ' : ' . $a . $b . $c . $d . NL` so schnell ist. Ganz überrascht hat mich dann der hhvm mit dem schnellen "Stringbuilder" `"$i : $a $b $c $d\n"`.
Jörg Reinholz
> Die Rückschlüsse auf die Performance sind heute nicht mehr gültig (falls sie das überhaupt je waren). Auf <http://www.phpbench.com/> gibt es ein paar Benchmarks die diesem Mythos zumindest die Luft aus den Segeln nehmen sollten.
Tatsächlich!
------------
Ich habe mal selbst "gebenchmarkt". Die folgenden Ergebnisse mögen naturgemäß situationsbedingt leicht schwanken, sind aber von der Reihenfolge her reproduzierbar.
Skript:
-------
~~~php
<?php
$a = 'aaaaaaa';
$b = 'bbbbbbb';
$c = 'ccccccc';
$d = 'ddddddd';
define('M', 1000000);
define('NL', "\n");
ob_start();
$s = microtime(true);
for ($i=0; $i<M; $i++) {
echo $i, ' : ', $a, $b, $c, $d, NL;
}
ob_end_clean();
echo 'Komma: ', ( microtime(true) - $s), 's', NL;
ob_start();
$s = microtime(true);
for ($i=0; $i<M; $i++) {
echo $i . ' : ' . $a . $b . $c . $d . NL;
}
ob_end_clean();
echo 'Punkt: ', (microtime(true) - $s), 's', NL;
ob_start();
$s = microtime(true);
for ($i=0; $i<M; $i++) {
echo "$i : $a $b $c $d\n";
}
ob_end_clean();
echo 'String:' , (microtime(true) - $s) , 's', NL;
~~~
Tests:
------
1\. PHP 5.5.9-1ubuntu4.14 (cli) (built: Oct 28 2015 01:34:46)
~~~
fastix@trainer:/tmp$ php test.php
Komma: 0.57300615310669s
Punkt: 0.59544205665588s
String:0.53846502304077s
~~~
2\. HipHop VM 3.11.1 (rel) (hhvm)
~~~
fastix@trainer:/tmp$ hhvm test.php
Komma: 0.33236718177795s
Punkt: 0.21430087089539s
String:0.26826691627502s
~~~
3\. PHP 7.0.3-3+deb.sury.org~trusty+1 (cli) ( NTS ) auf einem Raspberry 2b+
Bitte beachten: Ein Armel ist definitiv langsamer als ein Intel oder AMD. Dafür zieht der aber auch nur ganz wenig Strom.
~~~
trainer@home:/tmp$ php /tmp/test.php
Komma: 2.8800621032715s
Punkt: 3.3124830722809s
String:2.4350960254669s
~~~
Ich bin tatsächlich überrascht, dass unter PHP 5.5.9 und 7.0.3 der
Jörg Reinholz
PHP Variablen übergabe in welcher Form sinnvoll?
bearbeitet von Jörg ReinholzMoin!
> Die Rückschlüsse auf die Performance sind heute nicht mehr gültig (falls sie das überhaupt je waren). Auf <http://www.phpbench.com/> gibt es ein paar Benchmarks die diesem Mythos zumindest die Luft aus den Segeln nehmen sollten.
Tatsächlich!
------------
Ich habe mal selbst "gebenchmarkt". Die folgenden Ergebnisse mögen naturgemäß situationsbedingt leicht schwanken, sind aber von der Reihenfolge her reproduzierbar.
Skript:
-------
~~~php
<?php
$a = 'aaaaaaa';
$b = 'bbbbbbb';
$c = 'ccccccc';
$d = 'ddddddd';
define('M', 1000000);
define('NL', "\n");
ob_start();
$s = microtime(true);
for ($i=0; $i<M; $i++) {
echo $i, ' : ', $a, $b, $c, $d, NL;
}
ob_end_clean();
echo 'Komma: ', ( microtime(true) - $s), 's', NL;
ob_start();
$s = microtime(true);
for ($i=0; $i<M; $i++) {
echo $i . ' : ' . $a . $b . $c . $d . NL;
}
ob_end_clean();
echo 'Punkt: ', (microtime(true) - $s), 's', NL;
ob_start();
$s = microtime(true);
for ($i=0; $i<M; $i++) {
echo "$i : $a $b $c $d\n";
}
ob_end_clean();
echo 'String:' , (microtime(true) - $s) , 's', NL;
~~~
Tests:
------
1\. PHP 5.5.9-1ubuntu4.14 (cli) (built: Oct 28 2015 01:34:46)
~~~
fastix@trainer:/tmp$ php test.php
Komma: 0.57300615310669s
Punkt: 0.59544205665588s
String:0.53846502304077s
~~~
2\. HipHop VM 3.11.1 (rel) (hhvm)
~~~
fastix@trainer:/tmp$ hhvm test.php
Komma: 0.33236718177795s
Punkt: 0.21430087089539s
String:0.26826691627502s
~~~
3\. PHP 7.0.3-3+deb.sury.org~trusty+1 (cli) ( NTS ) auf einem Raspberry 2b+
Bitte beachten: Ein Armel ist definitiv langsamer als ein Intel oder AMD. Dafür zieht der aber auch nur ganz wenig Strom.
~~~
trainer@home:/tmp$ php /tmp/test.php
Komma: 2.8800621032715s
Punkt: 3.3124830722809s
String:2.4350960254669s
~~~
Ich bin tatsächlich überrascht, dass unter PHP 5.5.9 und 7.0.3 der zusammengebaute String `$i . ' : ' . $a . $b . $c . $d . NL` so schnell ist. Ganz überrascht hat mich dann der hhvm mit dem schnellen "Stringbuilder" `$i : $a $b $c $d\n`.
Jörg Reinholz
> Die Rückschlüsse auf die Performance sind heute nicht mehr gültig (falls sie das überhaupt je waren). Auf <http://www.phpbench.com/> gibt es ein paar Benchmarks die diesem Mythos zumindest die Luft aus den Segeln nehmen sollten.
Tatsächlich!
------------
Ich habe mal selbst "gebenchmarkt". Die folgenden Ergebnisse mögen naturgemäß situationsbedingt leicht schwanken, sind aber von der Reihenfolge her reproduzierbar.
Skript:
-------
~~~php
<?php
$a = 'aaaaaaa';
$b = 'bbbbbbb';
$c = 'ccccccc';
$d = 'ddddddd';
define('M', 1000000);
define('NL', "\n");
ob_start();
$s = microtime(true);
for ($i=0; $i<M; $i++) {
echo $i, ' : ', $a, $b, $c, $d, NL;
}
ob_end_clean();
echo 'Komma: ', ( microtime(true) - $s), 's', NL;
ob_start();
$s = microtime(true);
for ($i=0; $i<M; $i++) {
echo $i . ' : ' . $a . $b . $c . $d . NL;
}
ob_end_clean();
echo 'Punkt: ', (microtime(true) - $s), 's', NL;
ob_start();
$s = microtime(true);
for ($i=0; $i<M; $i++) {
echo "$i : $a $b $c $d\n";
}
ob_end_clean();
echo 'String:' , (microtime(true) - $s) , 's', NL;
~~~
Tests:
------
1\. PHP 5.5.9-1ubuntu4.14 (cli) (built: Oct 28 2015 01:34:46)
~~~
fastix@trainer:/tmp$ php test.php
Komma: 0.57300615310669s
Punkt: 0.59544205665588s
String:0.53846502304077s
~~~
2\. HipHop VM 3.11.1 (rel) (hhvm)
~~~
fastix@trainer:/tmp$ hhvm test.php
Komma: 0.33236718177795s
Punkt: 0.21430087089539s
String:0.26826691627502s
~~~
3\. PHP 7.0.3-3+deb.sury.org~trusty+1 (cli) ( NTS ) auf einem Raspberry 2b+
Bitte beachten: Ein Armel ist definitiv langsamer als ein Intel oder AMD. Dafür zieht der aber auch nur ganz wenig Strom.
~~~
trainer@home:/tmp$ php /tmp/test.php
Komma: 2.8800621032715s
Punkt: 3.3124830722809s
String:2.4350960254669s
~~~
Ich bin tatsächlich überrascht, dass unter PHP 5.5.9 und 7.0.3 der zusammengebaute String `$i . ' : ' . $a . $b . $c . $d . NL` so schnell ist. Ganz überrascht hat mich dann der hhvm mit dem schnellen "Stringbuilder" `$i : $a $b $c $d\n`.
Jörg Reinholz
PHP Variablen übergabe in welcher Form sinnvoll?
bearbeitet von Jörg ReinholzMoin!
> Die Rückschlüsse auf die Performance sind heute nicht mehr gültig (falls sie das überhaupt je waren). Auf <http://www.phpbench.com/> gibt es ein paar Benchmarks die diesem Mythos zumindest die Luft aus den Segeln nehmen sollten.
Tatsächlich!
------------
Ich habe mal selbst "gebenchmarkt". Die folgenden Ergebnisse mögen naturgemäß situationsbedingt leicht schwanken, sind aber von der Reihenfolge her reproduzierbar.
Skript:
-------
~~~php
<?php
$a = 'aaaaaaa';
$b = 'bbbbbbb';
$c = 'ccccccc';
$d = 'ddddddd';
define('M', 1000000);
define('NL', "\n");
ob_start();
$s = microtime(true);
for ($i=0; $i<M; $i++) {
echo $i, ' : ', $a, $b, $c, $d, NL;
}
ob_end_clean();
echo 'Komma: ', ( microtime(true) - $s), 's', NL;
ob_start();
$s = microtime(true);
for ($i=0; $i<M; $i++) {
echo $i . ' : ' . $a . $b . $c . $d . NL;
}
ob_end_clean();
echo 'Punkt: ', (microtime(true) - $s), 's', NL;
ob_start();
$s = microtime(true);
for ($i=0; $i<M; $i++) {
echo "$i : $a $b $c $d\n";
}
ob_end_clean();
echo 'String:' , (microtime(true) - $s) , 's', NL;
~~~
1\. PHP 5.5.9-1ubuntu4.14 (cli) (built: Oct 28 2015 01:34:46)
~~~
fastix@trainer:/tmp$ php test.php
Komma: 0.57300615310669s
Punkt: 0.59544205665588s
String:0.53846502304077s
~~~
2\. HipHop VM 3.11.1 (rel) (hhvm)
~~~
fastix@trainer:/tmp$ hhvm test.php
Komma: 0.33236718177795s
Punkt: 0.21430087089539s
String:0.26826691627502s
~~~
3\. PHP 7.0.3-3+deb.sury.org~trusty+1 (cli) ( NTS ) auf einem Raspberry 2b+
Bitte beachten: Ein Armel ist definitiv langsamer als ein Intel oder AMD. Dafür zieht der aber auch nur ganz wenig Strom.
~~~
trainer@home:/tmp$ php /tmp/test.php
Komma: 2.8800621032715s
Punkt: 3.3124830722809s
String:2.4350960254669s
~~~
Ich bin tatsächlich überrascht, dass unter PHP 5.5.9 und 7.0.3 der zusammengebaute String `$i . ' : ' . $a . $b . $c . $d . NL` so schnell ist. Ganz überrascht hat mich dann der hhvm mit dem schnellen "Stringbuilder" `$i : $a $b $c $d\n`.
Jörg Reinholz