Zitat:
Zitat von D@rk-€vil™
nur ich frage mich, warum wurde in meiner letzten php weiterbildung gesagt.....das...
echo besser sei als output 
|
Jo, eigentlich stimmt es fast. Es kommt immer auf die Kombination an. Sobald man den Ausgabepuffer nutzt ist
echo schneller, ohne Pufferung
$output. Da aber die wenigsten schon mal was von ob_start gehört haben... Aber auch mit Puffer sind beide Varianten annähernd gleich. Daher würde ich die
$output Varaiante einer Masse von
echos immer vorziehen.
Testskript $output
PHP-Code:
<?
ob_start();
$scriptstart = microtime(true);
$output = '';
for($i = 0; $i < 500000; ++$i) {
$output .= 'Zahl' . $i;
}
echo $output;
unset($output);
echo '<br/><br/>Laufzeit: ' . (microtime(true) - $scriptstart) . 's<br/>benutzter Speicher: ' . memory_get_usage() . 'bytes';
ob_end_flush();
?>
Testskript echo
PHP-Code:
<?
ob_start();
$scriptstart = microtime(true);
for($i = 0; $i < 500000; ++$i) {
echo 'Zahl' . $i;
}
echo '<br/><br/>Laufzeit: ' . (microtime(true) - $scriptstart) . 's<br/>benutzter Speicher: ' . memory_get_usage() . 'bytes';
ob_end_flush();
?>
Durchlauf 1 mit Puffer
$output
Laufzeit: 0.63549590110779ms
benutzter Speicher: 5235576bytes
echo
Laufzeit: 0.62462306022644s
benutzter Speicher: 5235488bytes
Durchlauf 2 mit Puffer
$output
Laufzeit: 0.63504791259766ms
benutzter Speicher: 5235576bytes
echo
Laufzeit: 0.62371683120728s
benutzter Speicher: 5235488bytes
Durchlauf 3 mit Puffer
$output
Laufzeit: 0.64082717895508ms
benutzter Speicher: 5235576bytes
echo
Laufzeit: 0.63638401031494s
benutzter Speicher: 5235488bytes
Durchlauf 1 ohne Puffer
$output
Laufzeit: 0.62938117980957ms
benutzter Speicher: 5224840bytes
echo
Laufzeit: 3.9060130119324s
benutzter Speicher: 340272bytes
Durchlauf 2 ohne Puffer
$output
Laufzeit: 0.68935108184814ms
benutzter Speicher: 5224840bytes
echo
Laufzeit: 2.9526829719543s
benutzter Speicher: 340272bytes
Durchlauf 3 ohne Puffer
$output
Laufzeit: 0.65321207046509ms
benutzter Speicher: 5224840bytes
echo
Laufzeit: 3.556214094162ms
benutzter Speicher: 340272bytes