@DaeDaluz

Ik hoorde een kwartje vallen...

lol bedankt
Mathieu Kooiman schreef op 03.04.2006 10:15

Zoals in m'n artikel staat zal PHP een string waarin geen variabelen staan behandelen als een single-quoted string met alle (performance) gevolgen van dien. Zie onder kopje "Show me that string, Baby" ;-)


Dus lijkt mij de logische conclusie dat als je variabele buiten je quotes houdt, enkele en dubbele quotes niet zoveel uitmaakt. (niet dat het sowieso veel uitmaakt).
Martijn! schreef op 03.04.2006 11:13
Het verschil in snelheid tussen de single en quoted string is ook wel makkelijk te verklaren.
Omdat beiden niet gelijk zijn aan elkaar.
PHP neemt de inhoud van een single-quoted string gewoon over, bij een quoted string wordt er eerst nog gekeken of er variabelen of controle tekens in staan.

In een single-quoted string kun je bijvoorbeeld geen enter ("n") intypen, maar moet je dit dus dus letterlijk doen.
<?php

echo 'regel1
regel2';

?>
Dus wil je geen variabelen of controle tekens gebruiken in de string dan gebruik je een single-quoted string, anders een quoted-string.

edit:

Nu we het toch hebben over uitvoertijd:
<?php

echo 'blaat' . 'blaat' . 'blaat' . 'blaat';

echo 'blaat' , 'blaat' , 'blaat' , 'blaat';

?>
De echo met de komma's in aanzienlijk sneller.

heb je ook nog bewijs? :)
@joop

script:<?php
error_reporting(E_ALL);

$variabele1 = 'ffsdfdsfsdfdsfsdf';
$variabele2 = 344324234324324324324;


$Tijd = array_sum(explode(' ', microtime()));

for( $i = 0; $i < 1000; $i++ )
{
echo 'blaat' , $variabele1 , 'blaat' , 'blaatblaatblaat' , $variabele2 , 'blaatblaatblaatblaatblaatblaatblaat';
}

echo '<br /><br />Uitvoertijd (komma): ' . (array_sum(explode(' ', microtime())) - $Tijd);

$Tijd = array_sum(explode(' ', microtime()));

for( $i = 0; $i < 1000; $i++ )
{
echo 'blaat' . $variabele1 . 'blaat' . 'blaatblaatblaat' . $variabele2 . 'blaatblaatblaatblaatblaatblaatblaat';
}

echo '<br /><br />Uitvoertijd (punt): ' . (array_sum(explode(' ', microtime())) - $Tijd);
?>

resultaten:
Uitvoertijd (punt): 0.00914692878723
Uitvoertijd (komma): 0.00761103630066

Uitvoertijd (punt): 0.00916886329651
Uitvoertijd (komma): 0.00759696960449

Uitvoertijd (punt): 0.00911903381348
Uitvoertijd (komma): 0.0653851032257

Uitvoertijd (komma): 0.00762701034546
Uitvoertijd (punt): 0.00912809371948

Uitvoertijd (komma): 0.00728702545166
Uitvoertijd (punt): 0.00905394554138

Uitvoertijd (komma): 0.00805306434631
Uitvoertijd (punt): 0.00919699668884
Eris schreef op 03.04.2006 08:13
Ziet er goed uit. En zowel bevestigd wat ik altijd wist...

Enkele quotes is sneller dan dubbele
En het bevestigt ook wat ik al een half jaar geleden heb geschreven, namelijk dat het onder normale omstandigheden niet de moeite waard is om op te optimaliseren, want de verschillen zijn verwaarloosbaar.

*zucht* al dat academische geneuzel toch altijd...
@Willem: Dat je je huidige schrijfwijze niet gaat aanpassen, dat snap ik. Maar waarom zou je een beginnende php-er niet direct de snelste methode aanleren? Je kan het geneuzel noemen, maar waarom zou je deze (minimale) tijdswinst laten liggen zonder dat het enige moeite kost om er gebruik van te maken?

En op een drukke website kon het wel eens gaan uitmaken. Vele kleine beetjes maken één grote...
In de meeste gevallen kan je denk ik beter uitgaan van het makkelijkste, en niet het snelste. Dubbele quotes zijn onhandiger omdat je dan de dubbele quotes in tags moet escapen. Maar in bijv. SQL gebruik ik altijd dubbele quotes, zodat ik de enkelen niet hoef te escapen.

Ik zit me eerlijk gezegd nu ook af te vragen waarom ik XHTML zou gebruiken, makkelijker is het toch niet, beter ondersteund is het niet, een toekomst is onduidelijk, waarom dan wel? Buzz-factor? Hetzelfde verhaal met $ binnen quotes. Het schrijven gaat neller, en de tijd dat het inneemt is niet echt relevant**, en is het nou ook werkelijk zoveel minder overzichtelijk? Als het al zo slecht is, waarom zou het dan ondersteund en niet door PHP zelf worden afgeraden?

** Mits je natuurlijk 2 miljoen keer dat moet laten uitvoeren, dan scheelt het al snel weer een seconde of 2.
Half jaar? 3/4 maanden hoor en ik heb dat altijd onthouden hoor willem-vpie
@ Kalle : heb en hou respect voor elkaar!
Dus niet op de persoon gaan spelen! Wat jij nu als comment neerzet gaat mijn grenzen voorblij!
Laten we dit even een goed topic houden. Offtopics worden verwijderd. [preventief]

Reageren