Avantages et inconvénients de la syntaxe heredoc

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Avantages et inconvénients de la syntaxe heredoc

Re: Avantages et inconvénients de la syntaxe heredoc

par AB » 18 nov. 2010, 13:50

Le second test est quand même plus significatif car quand on met une chaine de caractères entre simples quotes le parseur ne cherche pas à l'interpréter, et cela va normalement un peu plus vite que de mettre cette même chaine entre doubles quotes où le parseur doit définir s'il s'agit d'une variable ou d'une chaine de caractères.
Or dans ton premier test on observait une différence au profit de la syntaxe entre doubles quotes, comme quoi il est important de faire des tests significatifs :wink:

Re: Avantages et inconvénients de la syntaxe heredoc

par Castor Gaspard » 18 nov. 2010, 11:54

Bonjour Stealth,

Jusqu'à te lire, je n'avais pas compris la différence entre heredoc et herenow. :wink:

Thanks.

Gaspard

Re: Avantages et inconvénients de la syntaxe heredoc

par stealth35 » 18 nov. 2010, 11:09

y'a une nouvelle syntax aussi dans php 5.3 c'est newdoc, elle permet de ne pas interprété le contenu comme les quote par rapport au double quote d'une chaine
$test = 'toto';
	
$text = <<<HEREDOC
	hello $test
HEREDOC;

echo $text;
//hello toto
$test = 'toto';
$text = <<<'NEWDOC'
	hello $test
NEWDOC;

echo $text;
//hello $test
on peux aussi mettre les double quote sur cette syntaxe
$test = 'toto';
	
$text = <<<"HEREDOC"
	hello $test
HEREDOC;
echo $text;
//hello toto
:wink:

Re: Avantages et inconvénients de la syntaxe heredoc

par Castor Gaspard » 18 nov. 2010, 10:30

Bonjour,

Oui, Ab, j'ai suivi ta remarque. Les résultats des tests sont plus intéressants...
$var1 = 'lundi';
$var2 = 'mardi';
$var3 = 'jeudi';
... $chaine = '<div><p>du texte et encore du texte '.$var1.' <a href ="'.$var2.'" >'.$var2.'</a> et puis du texte et encore du texte '.$var3.' </p></div>';
// 4.1067469120026 secondes
$chaine = "<div><p>du texte et encore du texte ".$var1." <a href =".$var2." >".$var2."</a> et puis du texte et encore du texte ".$var3." </p></div>";
// 4.1809959411621 secondes
$chaine = <<<EOD
<div><p>du texte et encore du texte $var1 <a href = $var2>$var2</a> et puis du texte et encore du texte $var3.</p></div>
EOD;
// 4.3892140388489 secondes
Donc, j'ai l'impression que, sur trois millions d'itérations, la différence n'est pas si importante...

Néanmoins, une remarque et une question...
- le résultat des traitements fluctue d'un moment à l'autre, mais la différence est conservée ;
- y-a-t-il un effet "mémoire" du Parseur, qui mettrait plus de temps à effectuer la première itération que les suivantes (je pourrai tester avec deux itérations, mais je ne suis pas certain que le temps soit mesurable) ?

Edit...
Pour 1, 2, 3, 4 itérations avec la syntaxe heredoc, j'obtiens :
  • 2.0980834960938E-5 seconde
    2.5033950805664E-5 seconde
    2.9087066650391E-5 seconde
    3.0994415283203E-5 seconde
Autrement dit, la différence est quasiment la même itération par itération. Il y a juste un temps de latence au début du traitement, qui est incompressible.

Merci.

Cordialement,

Gaspard

Re: Avantages et inconvénients de la syntaxe heredoc

par AB » 18 nov. 2010, 04:00

Tu ne t'y ai pas tout à fait bien pris.

D'une part il faudrait une chaine plus longue et puis surtout avec des concaténations de texte et de variables pour représenter un peu mieux la réalité. Genre :
$var1 = 'ma première variable';
$var2 = 'ma seconde variable';
$var3 = 'ma troisième variable';

//Et tu bench par exemple sur

$chaine = '<div><p>du texte et encore du texte '.$var1.' <a href ="'.$var2.'" >'.$var1.'</a> et puis du texte et encore du texte '.$var1.' </p></div>';

//et l'équivalent avec heredoc
Bon c'est un exemple juste pour dire qu'il vaut mieux tester sur des trucs qui ressemblent un peu plus à la réalité. Là ton exemple était un peu trop minimaliste et non représentatif :wink:

Re: Avantages et inconvénients de la syntaxe heredoc

par Castor Gaspard » 17 nov. 2010, 23:36

Bonsoir,

Merci, Ab !

Un Bench. Je ne savais pas comment faire ! Mais j'ai trouvé sur developpez.com.

Donc, avec trois millions d'itérations...
$chaine='Ceci est une chaîne.'; // 1.0373899936676 seconde
$chaine="Ceci est une chaîne."; // 0.957768201828 seconde
<<<EOD
Ceci est une chaîne.
EOD; 
// 1.0345089435577 seconde
Donc, si je m'y suis bien pris, la différence n'est pas énorme. :mrgreen:

Cordialement,

Gaspard

Re: Avantages et inconvénients de la syntaxe heredoc

par AB » 17 nov. 2010, 22:51

Oui t'as bien résumé les choses. Et si le parsing est un poil mois rapide, ce ne doit pas être de beaucoup. Pourquoi ne fais tu pas un petit bench pour mieux cerner la différence ?

Avantages et inconvénients de la syntaxe heredoc

par Castor Gaspard » 17 nov. 2010, 20:49

Bonjour,

Bah, j'ai une question théorique, car j'adore couper en quatre les cheveux.

Quels sont les avantages et les inconvénients de la syntaxe heredoc ? Pourquoi est-elle si peu employée ?

En fait, selon moi, elle présente l'atout de ne pas obliger à jongler entre guillemets simples et doubles pour l'affichage des variables, en dépit de sa contrainte de retour à la ligne.

Les débutants qui me liront auront peut-être intérêt à s'y intéresser.

J'ai lu ça ou là que le Parsing du code était un chouïa plus lent, mais peut-être s'agit-il d'une légende.

Qu'en pensez-vous ?

Cordialement,

Gaspard