Raketenwilli: Mist! Dümmster aller Messfehler! Template ist nicht so schnell wie gedacht.

Beitrag lesen

Das braucht 10 Mal so lange…

Ich habe Mist gemessen. Asche auf mein Haupt.

Ich hab versehentlich die Vorlage für das Skript getestet. Was ich also wirklich gemessen habe hat gar nichts ausgegeben.

<?php
# 5.php
$row["user"]="fritz";
$row["score"]=34;
$row["timestamp"]='2022-12-30';

for ($i=1;$i<100000;$i++):
?>
'user: '<?=$row['user'];?>' - score: '<?=$row['score'];?>' '<?=$row['timestamp'];?>'<br>';
<?php
endfor;
real	0m1,032s
user	0m0,533s
sys	0m0,468s

Und liegt damit sogar im Bereich des schlechtesten Ergebnisses:

time 1.php > /dev/null
real	0m1,026s
user	0m0,523s
sys	0m0,472s

So nebenher, bevor jemand fragt: Ein explizites implode() mit einem als Konstante definierten Trenner lag zwischen Konkatenieren (das ist schneller) und der Übergabe als Liste (ist langsamer)

<?php
# 6.php

define ('DELIM', '');
$row["user"]="fritz";
$row["score"]=34;
$row["timestamp"]='2022-12-30';

$arr=[ 'user: ', $row['user'], ' - score: ', $row['score'], ' ', $row['timestamp'], '' ];

for ($i=1;$i<100000;$i++) {
echo implode( DELIM , $arr );
}

time php 6.php > /dev/null

real	0m0,298s
user	0m0,153s
sys	0m0,108s