Überraschung: Konkatenieren ist deutlich schneller als Übergabe der Parts für echo
bearbeitet von RaketenwilliWir (hier im Forum) hatten genau das Thema schon mal (als PHP 7.2 neu war) und das hatte uns damals alle überrascht:
**Zum selbst Testen:**
~~~PHP
<?php
# 1.php
$row["user"]="fritz";
$row["score"]=34;
$row["timestamp"]='2022-12-30';
for ($i=1;$i<100000;$i++) {
echo "user: ", $row["user"], " - score: ", $row["score"], " ", $row["timestamp"], "<br>";
}
~~~
~~~PHP
<?php
#2.php
$row["user"]="fritz";
$row["score"]=34;
$row["timestamp"]='2022-12-30';
for ($i=1;$i<100000;$i++) {
echo "user: ". $row["user"]. " - score: ". $row["score"]. " ". $row["timestamp"]. "<br>";
}
~~~
Im Terminal ausgeführt (und die Ausgaben nach /dev/null umgeleitet) ist die Variante mit Konkatenierung stabil um den Faktor 3 schneller:
~~~
time 1.php > /dev/null
real 0m1,026s
user 0m0,523s
sys 0m0,472s
time 2.php > /dev/null
real 0m0,347s
user 0m0,126s
sys 0m0,186s
~~~
„Unverwässert“ durch z.b. ohne Zeiten für das Starten des Interpreters (user-time), wird sogar weniger als 1/4 der Zeit gebraucht. (Getestet auf Raspi4 mit PHP 8.2.0RC7 (cli) (built: Nov 26 2022 14:19:44) (NTS) )
**Testsieger: Volles Konkatenieren des Outputs:**
~~~PHP
<?php
# 3.php
$row["user"]="fritz";
$row["score"]=34;
$row["timestamp"]='2022-12-30';
$out='';
for ($i=1;$i<100000;$i++) {
$out.="user: ". $row["user"]. " - score: ". $row["score"]. " ". $row["timestamp"]. "<br>";
}
echo $out;
~~~
~~~
time 3.php > /dev/null
real 0m0,197s
user 0m0,086s
sys 0m0,074s
~~~
**Letzte Mikrooptimierung: Ersparen des Nachsehens, ob in den Strings etwas ersetzt werden muss** (`"` → `'`):
~~~PHP
<?php
# 4.php
$row["user"]="fritz";
$row["score"]=34;
$row["timestamp"]='2022-12-30';
$out='';
for ($i=1;$i<100000;$i++) {
$out.='user: '. $row['user']. ' - score: '. $row['score']. ' '. $row['timestamp']. '<br>';
}
echo $out;
~~~
~~~
time 4.php > /dev/null
real 0m0,192s
user 0m0,109s
sys 0m0,055s
~~~
Überraschung: Konkatenieren ist deutlich schneller als Übergabe der Parts für echo
bearbeitet von RaketenwilliWir (hier im Forum) hatten genau das Thema schon mal (als PHP 7.2 neu war) und das hatte uns damals alle überrascht:
**Zum selbst Testen:**
~~~PHP
<?php
# 1.php
$row["user"]="fritz";
$row["score"]=34;
$row["timestamp"]='2022-12-30';
for ($i=1;$i<100000;$i++) {
echo "user: ", $row["user"], " - score: ", $row["score"], " ", $row["timestamp"], "<br>";
}
~~~
~~~PHP
<?php
#2.php
$row["user"]="fritz";
$row["score"]=34;
$row["timestamp"]='2022-12-30';
for ($i=1;$i<100000;$i++) {
echo "user: ". $row["user"]. " - score: ". $row["score"]. " ". $row["timestamp"]. "<br>";
}
~~~
Im Terminal ausgeführt (und die Ausgaben nach /dev/null umgeleitet) ist die Variante mit Konkatenierung stabil um den Faktor 3 schneller:
~~~
time 1.php > /dev/null
real 0m1,026s
user 0m0,523s
sys 0m0,472s
time 2.php > /dev/null
real 0m0,347s
user 0m0,126s
sys 0m0,186s
~~~
„Unverwässert“ durch z.b. ohne Zeiten für das Starten des Interpreters (user-time), wird sogar weniger als 1/4 der Zeit gebraucht. (Getestet auf Raspi4 mit PHP 8.2.0RC7 (cli) (built: Nov 26 2022 14:19:44) (NTS) )
**Testsieger: Volles Konkatenieren des Outputs:**
~~~PHP
<?php
# 3.php
$row["user"]="fritz";
$row["score"]=34;
$row["timestamp"]='2022-12-30';
$out='';
for ($i=1;$i<100000;$i++) {
$out.="user: ". $row["user"]. " - score: ". $row["score"]. " ". $row["timestamp"]. "<br>";
}
echo $out;
~~~
~~~
time 3.php > /dev/null
real 0m0,197s
user 0m0,086s
sys 0m0,074s
~~~
**Letzte Mikrooptimierung: Ersparen des Nachsehens, ob da ersetzt werden muss** (`"` → `'`):
~~~PHP
<?php
# 4.php
$row["user"]="fritz";
$row["score"]=34;
$row["timestamp"]='2022-12-30';
$out='';
for ($i=1;$i<100000;$i++) {
$out.='user: '. $row['user']. ' - score: '. $row['score']. ' '. $row['timestamp']. '<br>';
}
echo $out;
~~~
~~~
time 4.php > /dev/null
real 0m0,192s
user 0m0,109s
sys 0m0,055s
~~~
Überraschung: Konkatenieren ist deutlich schneller als Übergabe der Parts für echo
bearbeitet von RaketenwilliWir (hier im Forum) hatten genau das Thema schon mal (als PHP 7.2 neu war) und das hatte uns damals alle überrascht:
Zum selbst Testen:
~~~PHP
<?php
# 1.php
$row["user"]="fritz";
$row["score"]=34;
$row["timestamp"]='2022-12-30';
for ($i=1;$i<100000;$i++) {
echo "user: ", $row["user"], " - score: ", $row["score"], " ", $row["timestamp"], "<br>";
}
~~~
~~~PHP
<?php
#2.php
$row["user"]="fritz";
$row["score"]=34;
$row["timestamp"]='2022-12-30';
for ($i=1;$i<100000;$i++) {
echo "user: ". $row["user"]. " - score: ". $row["score"]. " ". $row["timestamp"]. "<br>";
}
~~~
Im Terminal ausgeführt (und die Ausgaben nach /dev/null umgeleitet) ist die Variante mit Konkatenierung stabil um den Faktor 3 schneller:
~~~
time 1.php > /dev/null
real 0m1,026s
user 0m0,523s
sys 0m0,472s
time 2.php > /dev/null
real 0m0,347s
user 0m0,126s
sys 0m0,186s
~~~
„Unverwässert“ durch z.b. ohne Zeiten für das Starten des Interpreters (user-time), wird sogar weniger als 1/4 der Zeit gebraucht. (Getestet auf Raspi4 mit PHP 8.2.0RC7 (cli) (built: Nov 26 2022 14:19:44) (NTS) )
**Testsieger: Volles Konkatenieren des Outputs:**
~~~PHP
<?php
# 3.php
$row["user"]="fritz";
$row["score"]=34;
$row["timestamp"]='2022-12-30';
$out='';
for ($i=1;$i<100000;$i++) {
$out.="user: ". $row["user"]. " - score: ". $row["score"]. " ". $row["timestamp"]. "<br>";
}
echo $out;
~~~
~~~
time 3.php > /dev/null
real 0m0,197s
user 0m0,086s
sys 0m0,074s
~~~
Letzte Mikrooptimierung: Ersparen des Nachsehens, ob da ersetzt werden muss (`"` → `'`):
~~~PHP
<?php
# 4.php
$row["user"]="fritz";
$row["score"]=34;
$row["timestamp"]='2022-12-30';
$out='';
for ($i=1;$i<100000;$i++) {
$out.='user: '. $row['user']. ' - score: '. $row['score']. ' '. $row['timestamp']. '<br>';
}
echo $out;
~~~
~~~
time 4.php > /dev/null
real 0m0,192s
user 0m0,109s
sys 0m0,055s
~~~
Überraschung: Konkatenieren ist deutlich schneller als Übergabe der Parts für echo
bearbeitet von RaketenwilliWir (hier im Forum) hatten genau das Thema schon mal (als PHP 7.2 neu war) und das hatte uns damals alle überrascht:
Zum selbst Testen:
~~~PHP
<?php
# 1.php
$row["user"]="fritz";
$row["score"]=34;
$row["timestamp"]='2022-12-30';
for ($i=1;$i<100000;$i++) {
echo "user: ", $row["user"], " - score: ", $row["score"], " ", $row["timestamp"], "<br>";
}
~~~
~~~PHP
<?php
#2.php
$row["user"]="fritz";
$row["score"]=34;
$row["timestamp"]='2022-12-30';
for ($i=1;$i<100000;$i++) {
echo "user: ". $row["user"]. " - score: ". $row["score"]. " ". $row["timestamp"]. "<br>";
}
~~~
Im Terminal ausgeführt (und die Ausgaben nach /dev/null umgeleitet) ist die Variante mit Konkatenierung stabil um den Faktor 3 schneller:
~~~
time 1.php > /dev/null
real 0m1,026s
user 0m0,523s
sys 0m0,472s
time 2.php > /dev/null
real 0m0,347s
user 0m0,126s
sys 0m0,186s
~~~
„Unverwässert“ durch z.b. ohne Zeiten für das Starten des Interpreters (user-time), wird sogar weniger als 1/4 der Zeit gebraucht. (Getestet auf Raspi4 mit PHP 8.2.0RC7 (cli) (built: Nov 26 2022 14:19:44) (NTS) )
**Testsieger: Volles Konkatenieren des Outputs:**
~~~PHP
<?php
# 3.php
$row["user"]="fritz";
$row["score"]=34;
$row["timestamp"]='2022-12-30';
$out='';
for ($i=1;$i<100000;$i++) {
$out.="user: ". $row["user"]. " - score: ". $row["score"]. " ". $row["timestamp"]. "<br>";
}
echo $out;
~~~
~~~
time 3.php > /dev/null
real 0m0,197s
user 0m0,086s
sys 0m0,074s
~~~
Überraschung: Konkatenieren ist deutlich schneller als Übergabe der Parts für echo
bearbeitet von RaketenwilliWir (hier im Forum) hatten genau das Thema schon mal (als PHP 7.2 neu war) und das hatte uns damals alle überrascht:
Zum selbst Testen:
~~~PHP
<?php
# 1.php
$row["user"]="fritz";
$row["score"]=34;
$row["timestamp"]='2022-12-30';
for ($i=1;$i<100000;$i++) {
echo "user: ", $row["user"], " - score: ", $row["score"], " ", $row["timestamp"], "<br>";
}
~~~
~~~PHP
<?php
#2.php
$row["user"]="fritz";
$row["score"]=34;
$row["timestamp"]='2022-12-30';
for ($i=1;$i<100000;$i++) {
echo "user: ". $row["user"]. " - score: ". $row["score"]. " ". $row["timestamp"]. "<br>";
}
~~~
Im Terminal ausgeführt (und die Ausgaben nach /dev/null umgeleitet) ist die Variante mit Konkatenierung stabil um den Faktor 3 schneller:
~~~
time 1.php
real 0m1,026s
user 0m0,523s
sys 0m0,472s
time 2.php
real 0m0,347s
user 0m0,126s
sys 0m0,186s
~~~
„Unverwässert“ durch z.b. ohne Zeiten für das Starten des Interpreters (user-time), wird sogar weniger als 1/4 der Zeit gebraucht. (Getestet auf Raspi4 mit PHP 8.2.0RC7 (cli) (built: Nov 26 2022 14:19:44) (NTS) )
Überraschung: Konkatenieren ist deutlich schneller als Übergabe der Parts für echo
bearbeitet von RaketenwilliWir (hier im Forum) hatte das Thema schon mal (als PHP 7.2 neu war) und das hatte uns damals alle überrascht:
Zum selbst Testen:
~~~PHP
<?php
# 1.php
$row["user"]="fritz";
$row["score"]=34;
$row["timestamp"]='2022-12-30';
for ($i=1;$i<100000;$i++) {
echo "user: ", $row["user"], " - score: ", $row["score"], " ", $row["timestamp"], "<br>";
}
~~~
~~~PHP
<?php
#2.php
$row["user"]="fritz";
$row["score"]=34;
$row["timestamp"]='2022-12-30';
for ($i=1;$i<100000;$i++) {
echo "user: ". $row["user"]. " - score: ". $row["score"]. " ". $row["timestamp"]. "<br>";
}
~~~
Im Terminal ausgeführt (und die Ausgaben nach /dev/null umgeleitet) ist die Variante mit Konkatenierung stabil um den Faktor 3 schneller:
~~~
time 1.php
real 0m1,026s
user 0m0,523s
sys 0m0,472s
time 2.php
real 0m0,347s
user 0m0,126s
sys 0m0,186s
~~~
„Unverwässert“ durch z.b. ohne Zeiten für das Starten des Interpreters (user-time), wird sogar weniger als 1/4 der Zeit gebraucht. (Getestet auf Raspi4 mit PHP 8.2.0RC7 (cli) (built: Nov 26 2022 14:19:44) (NTS) )
Überraschung: Konkatenieren ist deutlich schneller als Übergabe der Parts für echo
bearbeitet von RaketenwilliWir (hier im Forum) hatte das Thema schon mal (als PHP 7.2 neu war) und das hatte uns damals alle überrascht:
Zum selbst Testen:
~~~PHP
<?php
# 1.php
$row["user"]="fritz";
$row["score"]=34;
$row["timestamp"]='2022-12-30';
for ($i=1;$i<100000;$i++) {
echo "user: ", $row["user"], " - score: ", $row["score"], " ", $row["timestamp"], "<br>";
}
~~~
~~~PHP
<?php
#2.php
$row["user"]="fritz";
$row["score"]=34;
$row["timestamp"]='2022-12-30';
for ($i=1;$i<100000;$i++) {
echo "user: ". $row["user"]. " - score: ". $row["score"]. " ". $row["timestamp"]. "<br>";
}
~~~
Im Terminal ausgeführt (und die Ausgaben nach /dev/null umgeleitet) ist die Variante mit Konkatenierung stabil um den Faktor 3 schneller:
~~~
time 1.php
real 0m1,026s
user 0m0,523s
sys 0m0,472s
time 2.php
real 0m0,347s
user 0m0,126s
sys 0m0,186s
~~~
„Unverwässert“ durch z.b. Zeiten für das Öffnen der Datei wird sogar weniger als 1/4 der Zeit gebraucht. (Getestet auf Raspi4 mit PHP 8.2.0RC7 (cli) (built: Nov 26 2022 14:19:44) (NTS) )
Überraschung: Konkatenieren ist schneller als Übergabe der Parts für echo
bearbeitet von RaketenwilliWir (hier im Forum) hatte das Thema schon mal (als PHP 7.2 neu war) und das hatte uns damals alle überrascht:
Zum selbst Testen:
~~~PHP
<?php
# 1.php
$row["user"]="fritz";
$row["score"]=34;
$row["timestamp"]='2022-12-30';
for ($i=1;$i<100000;$i++) {
echo "user: ", $row["user"], " - score: ", $row["score"], " ", $row["timestamp"], "<br>";
}
~~~
~~~PHP
<?php
#2.php
$row["user"]="fritz";
$row["score"]=34;
$row["timestamp"]='2022-12-30';
for ($i=1;$i<100000;$i++) {
echo "user: ". $row["user"]. " - score: ". $row["score"]. " ". $row["timestamp"]. "<br>";
}
~~~
Im Terminal ausgeführt (und die Ausgaben nach /dev/null umgeleitet) ist die Variante mit Konkatenierung stabil um den Faktor 3 schneller:
~~~
time 1.php
real 0m1,026s
user 0m0,523s
sys 0m0,472s
time 2.php
real 0m0,347s
user 0m0,126s
sys 0m0,186s
~~~
„Unverwässert“ durch z.b. Zeiten für das Öffnen der Datei wird sogar weniger als 1/4 der Zeit gebraucht. (Getestet auf Raspi4 mit PHP 8.2.0RC7 (cli) (built: Nov 26 2022 14:19:44) (NTS) )
Überraschung: Konkatenieren ist schneller als Übergabe der Parts für echo
bearbeitet von RaketenwilliWir (hier im Forum) hatte das Thema schon mal und das hatte uns damals alle überrascht:
Zum selbst Testen:
~~~
<?php
# 1.php
$row["user"]="fritz";
$row["score"]=34;
$row["timestamp"]='2022-12-30';
for ($i=1;$i<100000;$i++) {
echo "user: ", $row["user"], " - score: ", $row["score"], " ", $row["timestamp"], "<br>";
}
~~~
~~~
<?php
#2.php
$row["user"]="fritz";
$row["score"]=34;
$row["timestamp"]='2022-12-30';
for ($i=1;$i<100000;$i++) {
echo "user: ". $row["user"]. " - score: ". $row["score"]. " ". $row["timestamp"]. "<br>";
}
~~~
Im Terminal ausgeführt (und die Ausgaben nach /dev/null umgeleitet) ist die Variante mit Konkatenierung stabil um den Faktor 3 schneller:
~~~
time 1.php
real 0m1,026s
user 0m0,523s
sys 0m0,472s
time 2.php
real 0m0,347s
user 0m0,126s
sys 0m0,186s
~~~
„Unverwässert“ durch z.b. Zeiten für das Öffnen der Datei wird sogar weniger als 1/4 der Zeit gebraucht. (Getestet auf Raspi4 mit PHP 8.2.0RC7 (cli) (built: Nov 26 2022 14:19:44) (NTS) )
Überraschung: Konkatenieren ist schneller als Übergabe der Parts für echo
bearbeitet von RaketenwilliWir (hier im Forum) hatte das Thema schon mal und das hatte uns damals alle überrascht:
Zum selbst Testen:
~~~
<?php
# 1.php
$row["user"]="fritz";
$row["score"]=34;
$row["timestamp"]='2022-12-30';
for ($i=1;$i<100000;$i++) {
echo "user: ", $row["user"], " - score: ", $row["score"], " ", $row["timestamp"], "<br>";
}
~~~
~~~
<?php
#2.php
$row["user"]="fritz";
$row["score"]=34;
$row["timestamp"]='2022-12-30';
for ($i=1;$i<100000;$i++) {
echo "user: ". $row["user"]. " - score: ". $row["score"]. " ". $row["timestamp"]. "<br>";
}
~~~
Im Terminal ausgeführt (und die Ausgaben nach /dev/null umgeleitet) ist die Variante mit Konkatenierung stabil um den Faktor 3 schneller:
~~~
time 1.php
real 0m1,026s
user 0m0,523s
sys 0m0,472s
time 2.php
real 0m0,347s
user 0m0,126s
sys 0m0,186s
~~~
„Unverwässert“ durch z.b. Zeiten für das Öffnen der Datei wird sogar weniger als 1/4 der Zeit gebraucht. (Getestet auf Raspi)