single of double quotes?
Hoi Jan,
Op dezelfde manier waarop jij op http://www.jankoehoorn.nl/mysql_performance.php de performance van "SELECT * FROM table" eens hebt bekeken, hebben wij op Scriptorama.nl eens single quotes en double quotes belicht: http://www.scriptorama.nl/internals/quotes-battle
Enkele quotes is sneller dan dubbele
Gaaf Jan en bedankt voor het delen. Een stelling onderbouwen om zo aan te tonen dat wat je stelt ook nog is correct is is mijnsinziens kicken :)
sneller is als
Maar dat is niet helemaal goed getest, want je kan met dubbele quotes ook gewoon
Want bij "Hallo, $doel"; staat de variabele in de string, en dan moet php vanzelfsprekend meer moeite doen om de variabele eraan vast te plakken.
Gewijzigd op 03/04/2006 09:21:00 door DaeDaluz
Zoals je in dit PHP voorbeeld ziet worden in de laatste line de qoutes weggeslahed
Gewijzigd op 03/04/2006 09:25:00 door Toine vd P
niet weggeslashed, ze worden escaped, waardoor php snapt dat daar de string niet ophoudt, maar dat de " in de string thuis horen, en dus wordt het script hierdoor niet vertraagt, misschien hoogstens omdat je string 1 teken per dubbele quote langer is...
lekker opgelet twan! koffie ? :)
Hoezo niet weggeslasht? Kun je iets beter uitleggen, ik snap je ff niet.
Maar als ik zet ""dit"", dan is het woord dit geen string, omdat het niet tussen " " staat.
"\"dit\"" nu is de string \"dit\", want door de \ voor de " negeert php de " als een quote met belang voor het php script en wordt het behandeld als een string.
Dit heeft als doel om het mogelijk te maken met echo() toch gewoon quotes of dubbele quotes te echo()-en zonder dat php ze verwerkt.
DaeDaluz:
Hierbij wordt aangetoont dat.
sneller is als
Maar dat is niet helemaal goed getest, want je kan met dubbele quotes ook gewoon
Want bij "Hallo, $doel"; staat de variabele in de string, en dan moet php vanzelfsprekend meer moeite doen om de variabele eraan vast te plakken.
sneller is als
Maar dat is niet helemaal goed getest, want je kan met dubbele quotes ook gewoon
Want bij "Hallo, $doel"; staat de variabele in de string, en dan moet php vanzelfsprekend meer moeite doen om de variabele eraan vast te plakken.
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" ;-)
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.
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:
Code (php)
De echo met de komma's in aanzienlijk sneller.
Gewijzigd op 03/04/2006 11:17:00 door Martijn B
Ik hoorde een kwartje vallen...
lol bedankt
Mathieu:
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!:
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.
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:
De echo met de komma's in aanzienlijk sneller.
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.
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:
Code (php)
De echo met de komma's in aanzienlijk sneller.
heb je ook nog bewijs? :)
script:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?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);
?>
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:
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.Ziet er goed uit. En zowel bevestigd wat ik altijd wist...
Enkele quotes is sneller dan dubbele
Enkele quotes is sneller dan dubbele
*zucht* al dat academische geneuzel toch altijd...
Gewijzigd op 03/04/2006 17:37:00 door Willem vp
En op een drukke website kon het wel eens gaan uitmaken. Vele kleine beetjes maken één grote...
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
Dus niet op de persoon gaan spelen! Wat jij nu als comment neerzet gaat mijn grenzen voorblij!
Gewijzigd op 03/04/2006 18:22:00 door PHP erik