TravoniMedlem sedan okt. 20041 556 inlägg Detta har säkert diskuterats förut och är säkert omtvistat, men jag klockade tre olika sätt att konkatenera strängar på nedanstående sätt och fick lite intressanta resultat.
<?php
$i=1;
while($i<=5000)
{
echo "The number is $i<br />";
$i++;
}
?>
Gav dessa tider:
0.0050959587097168
0.0050928592681885
0.0050959587097168
<?php
$i=1;
while($i<=5000)
{
echo 'The number is ' . $i . '<br />';
$i++;
}
?>
Gav dessa tider:
0.0077409744262695
0.0076601505279541
0.007641077041626
<?php
$i=1;
while($i<=5000)
{
?>The number is <?php echo $i;?><br /><?php
$i++;
}
?>
Gav dessa tider:
0.0038681030273438
0.0039408206939697
0.0039099952697754
Alltså, content-switching är det snabbaste sättet enligt min mätning...
TravoniMedlem sedan okt. 20041 556 inlägg Fotnot: Att slå ihop strängen med kommatecken var nästan lika snabbt som content-switcharna.
Alltså: echo 'The number is ', $i ,'<br />';
Några synpunkter: content-switchen och utskrift med , är tekniskt sett inte strängkonkatenering, utan en sekventiell utskrift till output-strömmen. (Och kan alltså inte användas när du bara vill foga samman en sträng utan att skriva ut)
Denna operation är i sin natur lite snabbare eftersom PHP inte behöver allokera utrymme för en ny sträng utan kan skriva tecken till strömmen.
Det kan vara så att metod 1 använder en optimering för att slippa allokera en ny sträng. Prova detta och se om det går långsammare:
<?php
$i=1;
while($i<=5000)
{
$x = "The number is $i<br />";
echo $x;
$i++;
}
?>
Sen finns det en del saker som komplicerar det hela, som att skilja på tiden själva strängoperationen tar mot tiden strängoperation+utskrift tar. En annan sak som kan vara värd att testa är skillnader mellan enkel- och dubbelcitat. (Enkelcitat lär vara snabbare eftersom det är färre saker att escapa, men man vet aldrig...) Dessutom kan din hastighet mot servern spela in (om du inte kör på localhost) samt PHP's output-buffring.