single of double quotes?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Jan Koehoorn

Jan Koehoorn

03/04/2006 01:04:00
Quote Anchor link
Ik kreeg vandaag deze PM:

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
 
PHP hulp

PHP hulp

24/11/2024 09:54:32
 
Eris -

Eris -

03/04/2006 08:13:00
Quote Anchor link
Ziet er goed uit. En zowel bevestigd wat ik altijd wist...

Enkele quotes is sneller dan dubbele
 
Lissy Pixel

Lissy Pixel

03/04/2006 09:11:00
Quote Anchor link
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 :)
 
DaeDaluz

DaeDaluz

03/04/2006 09:20:00
Quote Anchor link
Hierbij wordt aangetoont dat.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<? $singleQuoted = 'Hallo, ' . $doel; ?>

sneller is als
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<? $doubleQuoted = "Hallo, $doel"; ?>

Maar dat is niet helemaal goed getest, want je kan met dubbele quotes ook gewoon
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<? $doubleQuoted = "Hallo, " . $doel; ?>

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
 
Toine vd P

Toine vd P

03/04/2006 09:24:00
Quote Anchor link
Als je zowel buiten als binnen je PHP dubbele qwoutes gebruikt, kost het ook meer tijd om het uit te voeren omdat de binnenste dubbele doutes webgeslaht dienen te worden

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
echo "<input type=\"text\" name=\"test\">";
?>


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
 
DaeDaluz

DaeDaluz

03/04/2006 09:28:00
Quote Anchor link
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...
 
- wes  -

- wes -

03/04/2006 09:32:00
Quote Anchor link
lekker opgelet twan! koffie ? :)
 
Toine vd P

Toine vd P

03/04/2006 09:32:00
Quote Anchor link
@ DeaDaluz
Hoezo niet weggeslasht? Kun je iets beter uitleggen, ik snap je ff niet.
 
DaeDaluz

DaeDaluz

03/04/2006 09:43:00
Quote Anchor link
@Twan, binnen php is "dit" een string, dus alles wat tussen de " " staat, of 'dit' dus ook, nu is het woord dit bij allebei de string.

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.
 
Mathieu Kooiman

Mathieu Kooiman

03/04/2006 10:15:00
Quote Anchor link
DaeDaluz:
Hierbij wordt aangetoont dat.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<? $singleQuoted = 'Hallo, ' . $doel; ?>

sneller is als
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<? $doubleQuoted = "Hallo, $doel"; ?>

Maar dat is niet helemaal goed getest, want je kan met dubbele quotes ook gewoon
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<? $doubleQuoted = "Hallo, " . $doel; ?>

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" ;-)
 
Martijn B

Martijn B

03/04/2006 11:13:00
Quote Anchor link
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.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php

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

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

?>

De echo met de komma's in aanzienlijk sneller.
Gewijzigd op 03/04/2006 11:17:00 door Martijn B
 
Toine vd P

Toine vd P

03/04/2006 11:47:00
Quote Anchor link
@DaeDaluz

Ik hoorde een kwartje vallen...

lol bedankt
 
DaeDaluz

DaeDaluz

03/04/2006 12:20:00
Quote Anchor link
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).
 
Joop

joop

03/04/2006 13:26:00
Quote Anchor link
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.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?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? :)
 
Martijn B

Martijn B

03/04/2006 14:31:00
Quote Anchor link
@joop

script:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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
 
Willem vp

Willem vp

03/04/2006 17:36:00
Quote Anchor link
Eris:
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...
Gewijzigd op 03/04/2006 17:37:00 door Willem vp
 
Frank -

Frank -

03/04/2006 17:44:00
Quote Anchor link
@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...
 
Jelmer -

Jelmer -

03/04/2006 17:52:00
Quote Anchor link
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.
 
Kalle P

Kalle P

03/04/2006 17:53:00
Quote Anchor link
Half jaar? 3/4 maanden hoor en ik heb dat altijd onthouden hoor willem-vpie
 
Lissy Pixel

Lissy Pixel

03/04/2006 18:18:00
Quote Anchor link
@ Kalle : heb en hou respect voor elkaar!
Dus niet op de persoon gaan spelen! Wat jij nu als comment neerzet gaat mijn grenzen voorblij!
 
PHP erik

PHP erik

03/04/2006 18:22:00
Quote Anchor link
Laten we dit even een goed topic houden. Offtopics worden verwijderd. [preventief]
Gewijzigd op 03/04/2006 18:22:00 door PHP erik
 

Pagina: 1 2 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.