sebmafate
Messages postés4936Date d'inscriptionlundi 17 février 2003StatutMembreDernière intervention14 février 2014
-
25 oct. 2005 à 06:12
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 2012
-
1 juin 2006 à 20:34
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
Ce qui revient à :
if ( condition ) {
condition-vrai;
}elseif ( condition2 ) {
condition2-vrai
}else {
condition2-fausse;
}
Voila !
coolmanin25
Messages postés1Date d'inscriptionvendredi 7 octobre 2005StatutMembreDernière intervention 1 novembre 2005 1 nov. 2005 à 19:01
Je comprends pas grand chose lol
FhX
Messages postés2350Date d'inscriptionmercredi 13 octobre 2004StatutMembreDernière intervention18 avril 20153 31 oct. 2005 à 10:42
La dessus on est d'accord :)
cs_Anthomicro
Messages postés9433Date d'inscriptionmardi 9 octobre 2001StatutMembreDernière intervention13 avril 20078 30 oct. 2005 à 23:04
Ce que je veux dire par là c'est que l'interpréteur n'est pas forcément logique par rapport à l'humain ;-)
FhX
Messages postés2350Date d'inscriptionmercredi 13 octobre 2004StatutMembreDernière intervention18 avril 20153 30 oct. 2005 à 22:32
Pour toi c'est plus rapide pour l'oeil :) Pas pour l'interpréteur qui doit se taper une ligne entière pour connaitre la valeur de $var1 par exemple :)
Pour nous, c'est très logique donc très rapide. Pour l'interpréteur non, car plus la ligne est grande, plus elle est plus longue à examiner.
C'est pareil pour l'opérateur ternaire. Il est plus lent car tout ce fait en une ligne (condition, résultat vrai, résultat faux), donc tout doit être pris en compte. Hors, un vieux if() ira plus vite car il ne prendra en compte que le bon résultat (qu'il soit vrai ou faux).
Voila pourquoi :)
cs_Anthomicro
Messages postés9433Date d'inscriptionmardi 9 octobre 2001StatutMembreDernière intervention13 avril 20078 30 oct. 2005 à 21:26
"Question de raisonnement :)"
effectivement, pour moi quand je vois que $var=$var2=$var3=1 c'est plus rapide pour moi que de voir
$var=1;
$var2=1;
$var3=1;
etc... après c'est sûr que bon c'est comme pour le reste, certains sont rapides sur une méthode au contraire des autres et inversement qui préfèrent une autre méthode ;-)
FhX
Messages postés2350Date d'inscriptionmercredi 13 octobre 2004StatutMembreDernière intervention18 avril 20153 30 oct. 2005 à 21:21
Non, bien au contraire !
Il est beaucoup plus facile de créer directement une variable par sa valeur plutot que de créer une variable qui aura pour valeur une autre variable qui elle-même aura pour valeur une autre variable etc...
C'est de l'interprétation à la volée, chose qui n'existe pas quand on compile.
Voila pourquoi assigner une valeur à une variable une par une est plus rapide que d'assigner la même valeur à un paquet de variables :)
Question de raisonnement :)
cs_Anthomicro
Messages postés9433Date d'inscriptionmardi 9 octobre 2001StatutMembreDernière intervention13 avril 20078 30 oct. 2005 à 20:50
"Non, pas pour moi. Etant donnée que PHP interprète au fur et à mesure :"
justement, en toute logique
$var1=$var2=$var3=1; devrait être plus rapide que
$var1=1;
$var2=1;
$var3=1;
FhX
Messages postés2350Date d'inscriptionmercredi 13 octobre 2004StatutMembreDernière intervention18 avril 20153 30 oct. 2005 à 20:26
"L'opérateur ternaire est assez simple et ton else if n'est qu'une imbrication." Ah parce qu'un if/elseif/else peut faire autre chose qu'une imbrication ?
Par contre, je tiens à te rassurer tout de suite, bon nombre de personnes ne comprennent pas l'utilisation de l'opérateur ternaire.
En même temps, j'ai juste mis ca pour montrer que l'op ternaire peut faire autre chose qu'un if/else standard et qu'il peut aussi faire du if/elseif/elseif/else par exemple, ce dont bon nombre n'ont peut-être jamais pensé à faire quand il y a des conditions qui sont simples.
"( le $var1 $var2 $var3 = 1 m'a étonné aussi! )"
Non, pas pour moi. Etant donnée que PHP interprète au fur et à mesure :
-> Création de $var1.
-> Valeur de $var1 = $var2.
-> $var2 n'existe pas. Création de $var2.
-> Valeur de $var2 = $var3.
-> $var3 n'existe pas. Création de $var3.
-> Valeur de $var3 = 1.
-> Donc, $var2 $var3 1.
-> $var1 $var2 1.
Ce type d'écriture est d'autant plus long qu'il y a de variable en plus.
Bah voui, PHP ne lit pas à l'envers :D
coockiesch
Messages postés2268Date d'inscriptionmercredi 27 novembre 2002StatutMembreDernière intervention13 septembre 20134 26 oct. 2005 à 23:21
Oh! Je m'y attendais pas! :)
Bon, alors je suppose que j'ai vu ca en C++.
Merci pour le lien! ( le $var1 $var2 $var3 = 1 m'a étonné aussi! )
@++
R@f
cs_Anthomicro
Messages postés9433Date d'inscriptionmardi 9 octobre 2001StatutMembreDernière intervention13 avril 20078 26 oct. 2005 à 22:57
coockiesch
Messages postés2268Date d'inscriptionmercredi 27 novembre 2002StatutMembreDernière intervention13 septembre 20134 26 oct. 2005 à 22:54
Salut!
Je trouve dommage d'avoir une source que pour ca... L'opérateur ternaire est assez simple et ton else if n'est qu'une imbrication. Et une fois qu'on a vu un exemple, on les a un peu tous vus...
J'aurais préféré si c'était avec d'autres "astuces", etc...
Anthomicro : "Niveau benchs l'opérateur ternaire est légèrement derrière le if,elseif,else"
T'es sur, il me semblait que c'était là son intérêt principal, d'être plus rapide (en tout cas dans d'autres languages de prog). Je me trompe?
@++
R@f
cs_Anthomicro
Messages postés9433Date d'inscriptionmardi 9 octobre 2001StatutMembreDernière intervention13 avril 20078 25 oct. 2005 à 12:18
un problème de cache surement ;-)
FhX
Messages postés2350Date d'inscriptionmercredi 13 octobre 2004StatutMembreDernière intervention18 avril 20153 25 oct. 2005 à 12:16
Pourtant, ma source est bien passé du coté tuto...Du moins sur cette page, mais pas sur la page index :/
sebmafate
Messages postés4936Date d'inscriptionlundi 17 février 2003StatutMembreDernière intervention14 février 201437 25 oct. 2005 à 11:50
les admins ne peuvent pas modifier ce paramètre... C'est soit code, soit tuto.
nous ne pouvons modifier que le titre et la catégorie des sources (et tuto). Accessoirement le flag indiquant que la source est en .net, mais ce ne vous concerne pas.
FhX
Messages postés2350Date d'inscriptionmercredi 13 octobre 2004StatutMembreDernière intervention18 avril 20153 25 oct. 2005 à 11:46
Ouais, mon exemple est vraiment mal pris, car j'utilise true/false comme élément de réponse à mon opérateur.
Mais jvais le refaire.
Par contre, je savais pas trop où le mettre... code ou tuto :/ Alors je laisse le choix à notre cher Admin de le mettre la où il le veut ;)
Et oui Malalam, j'ai du temps à perdre :) Enfin pas tout à fait, parce que j'utilise ce type d'opérateur pour ma propre gestion des sessions. Et l'opérateur ternaire n'a pas été crée que pour faire joli :)
cs_Anthomicro
Messages postés9433Date d'inscriptionmardi 9 octobre 2001StatutMembreDernière intervention13 avril 20078 25 oct. 2005 à 10:31
Niveau benchs l'opérateur ternaire est légèrement derrière le if,elseif,else
Sinon bah j'aurais mis ça dans les tutos aussi ;-)
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 25 oct. 2005 à 10:16
ça s'utilises dans un projet, mais ça, ça ne fait rien... c'est pas vraiment une source, juste un bout de tuto... Mais dans ce cas, il manque les explications et les benchs...
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 25 oct. 2005 à 08:54
J'ai tâché de déplacer.
T'as vraiment du temps à perdre, n'empêche, FhX, pour trouver des trucs pareils... ;-)
monoceros01
Messages postés420Date d'inscriptionvendredi 28 novembre 2003StatutMembreDernière intervention20 mars 2006 25 oct. 2005 à 06:56
Mouahahah!
Ouais utilises trois valeurs différentes pour $truc dans ton exemple sinon ça rime à rien :p
Sinon c'est bien joli (j'ai utilisé cette syntaxe pour des trucs court), mais ça devient vite illisible/indigeste :)
(Sinon ça aurait pas plutôt sa place dans "tuto" que dans "code" ce truc? :x)
sebmafate
Messages postés4936Date d'inscriptionlundi 17 février 2003StatutMembreDernière intervention14 février 201437 25 oct. 2005 à 06:12
d'un autre coté, ton code peut aussi s'écrire comme ceci :
$truc ( $var 0 || $var2 === 0 );
1 juin 2006 à 20:34
1 juin 2006 à 20:28
beau déterrage au passage :)"
Si c'est pas du flood, ca...
@++
R@f
31 mai 2006 à 19:33
beau déterrage au passage :)
31 mai 2006 à 03:49
1) Ton code deviens ilisible. Franchement des ? puis des : c'est pas très rassurant :)
2) (et c'est prouvé :) Les blocs conditionels "classiques" et les switch-case sont plus rapides que les ternaires :D
http://www.vulgarisation-informatique.com/optimiser-php.php
2 nov. 2005 à 11:16
L'opérateur ternaire fonctionne comme ca :
$var = ( condition ) ? condition-vrai : condition-fausse;
Un peu comme un if/else
if ( condition ) {
condition-vrai;
} else {
condition-fausse;
}
Et bien maintenant, j'utilise l'opérateur ternaire pour faire un if/elseif/else :
$var = ( condition ) ? condition-vrai : ( condition2 ) ? condition-2 vrai : condition-2 fausse;
Ce qui revient à :
if ( condition ) {
condition-vrai;
}elseif ( condition2 ) {
condition2-vrai
}else {
condition2-fausse;
}
Voila !
1 nov. 2005 à 19:01
31 oct. 2005 à 10:42
30 oct. 2005 à 23:04
30 oct. 2005 à 22:32
Pour nous, c'est très logique donc très rapide. Pour l'interpréteur non, car plus la ligne est grande, plus elle est plus longue à examiner.
C'est pareil pour l'opérateur ternaire. Il est plus lent car tout ce fait en une ligne (condition, résultat vrai, résultat faux), donc tout doit être pris en compte. Hors, un vieux if() ira plus vite car il ne prendra en compte que le bon résultat (qu'il soit vrai ou faux).
Voila pourquoi :)
30 oct. 2005 à 21:26
effectivement, pour moi quand je vois que $var=$var2=$var3=1 c'est plus rapide pour moi que de voir
$var=1;
$var2=1;
$var3=1;
etc... après c'est sûr que bon c'est comme pour le reste, certains sont rapides sur une méthode au contraire des autres et inversement qui préfèrent une autre méthode ;-)
30 oct. 2005 à 21:21
Il est beaucoup plus facile de créer directement une variable par sa valeur plutot que de créer une variable qui aura pour valeur une autre variable qui elle-même aura pour valeur une autre variable etc...
C'est de l'interprétation à la volée, chose qui n'existe pas quand on compile.
Voila pourquoi assigner une valeur à une variable une par une est plus rapide que d'assigner la même valeur à un paquet de variables :)
Question de raisonnement :)
30 oct. 2005 à 20:50
justement, en toute logique
$var1=$var2=$var3=1; devrait être plus rapide que
$var1=1;
$var2=1;
$var3=1;
30 oct. 2005 à 20:26
Par contre, je tiens à te rassurer tout de suite, bon nombre de personnes ne comprennent pas l'utilisation de l'opérateur ternaire.
En même temps, j'ai juste mis ca pour montrer que l'op ternaire peut faire autre chose qu'un if/else standard et qu'il peut aussi faire du if/elseif/elseif/else par exemple, ce dont bon nombre n'ont peut-être jamais pensé à faire quand il y a des conditions qui sont simples.
"( le $var1 $var2 $var3 = 1 m'a étonné aussi! )"
Non, pas pour moi. Etant donnée que PHP interprète au fur et à mesure :
-> Création de $var1.
-> Valeur de $var1 = $var2.
-> $var2 n'existe pas. Création de $var2.
-> Valeur de $var2 = $var3.
-> $var3 n'existe pas. Création de $var3.
-> Valeur de $var3 = 1.
-> Donc, $var2 $var3 1.
-> $var1 $var2 1.
Ce type d'écriture est d'autant plus long qu'il y a de variable en plus.
Bah voui, PHP ne lit pas à l'envers :D
26 oct. 2005 à 23:21
Bon, alors je suppose que j'ai vu ca en C++.
Merci pour le lien! ( le $var1 $var2 $var3 = 1 m'a étonné aussi! )
@++
R@f
26 oct. 2005 à 22:57
www.vulgarisation-informatique.com/optimiser-php.php
26 oct. 2005 à 22:54
Je trouve dommage d'avoir une source que pour ca... L'opérateur ternaire est assez simple et ton else if n'est qu'une imbrication. Et une fois qu'on a vu un exemple, on les a un peu tous vus...
J'aurais préféré si c'était avec d'autres "astuces", etc...
Anthomicro : "Niveau benchs l'opérateur ternaire est légèrement derrière le if,elseif,else"
T'es sur, il me semblait que c'était là son intérêt principal, d'être plus rapide (en tout cas dans d'autres languages de prog). Je me trompe?
@++
R@f
25 oct. 2005 à 12:18
25 oct. 2005 à 12:16
25 oct. 2005 à 11:50
nous ne pouvons modifier que le titre et la catégorie des sources (et tuto). Accessoirement le flag indiquant que la source est en .net, mais ce ne vous concerne pas.
25 oct. 2005 à 11:46
Mais jvais le refaire.
Par contre, je savais pas trop où le mettre... code ou tuto :/ Alors je laisse le choix à notre cher Admin de le mettre la où il le veut ;)
Et oui Malalam, j'ai du temps à perdre :) Enfin pas tout à fait, parce que j'utilise ce type d'opérateur pour ma propre gestion des sessions. Et l'opérateur ternaire n'a pas été crée que pour faire joli :)
25 oct. 2005 à 10:31
Sinon bah j'aurais mis ça dans les tutos aussi ;-)
25 oct. 2005 à 10:16
25 oct. 2005 à 08:54
T'as vraiment du temps à perdre, n'empêche, FhX, pour trouver des trucs pareils... ;-)
25 oct. 2005 à 06:56
Ouais utilises trois valeurs différentes pour $truc dans ton exemple sinon ça rime à rien :p
Sinon c'est bien joli (j'ai utilisé cette syntaxe pour des trucs court), mais ça devient vite illisible/indigeste :)
(Sinon ça aurait pas plutôt sa place dans "tuto" que dans "code" ce truc? :x)
25 oct. 2005 à 06:12
$truc ( $var 0 || $var2 === 0 );
et je trouve ca plus propre...