webForumDet fria alternativet

Klocka konkatenering (Nördtest)

2 svar · 606 visningar · startad av Travoni

TravoniMedlem sedan okt. 20041 556 inlägg
#1

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
#2

Fotnot: Att slå ihop strängen med kommatecken var nästan lika snabbt som content-switcharna.
Alltså: echo 'The number is ', $i ,'<br />';

nitro2k01Medlem sedan aug. 20039 342 inlägg
#3

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.

135 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)