Différence entre ! et FALSE

WRInaute passionné
Bonjour,

Tout est dans le titre.

Existe-t-il une différence au niveau de la priorité, des performances ou autre entre ces deux opérateurs ?

Code:
if (!isset($var))
ou
Code:
if (isset($var) == FALSE)


Merci.
 
WRInaute accro
Bonjour

La fonction isset() rendant dans tous les cas, une valeur true ou false ( booléenne ), je pense que sur le plan de la signification des deux instructions, c'est strictement la même dans les deux cas, le fait de mettre === au lieu de == pour vérifier le caractère booléen ne servirait à rien.

En ce qui concerne le pseudo-code généré ( PHP a maintenant un compilateur just-in-time ), je ne sais pas... Bien malin qui pourrait le savoir, mais j'espère que d'autres pourront me détromper.

Bien à vous.
Amicalement.

Jean-François Ortolo
 
WRInaute impliqué
Sans vouloir dire de bétises, le point d'exclamation remplace le mot clé "not".
Ce qui fait revient à un test:
non expression == vraie
au lieu de:
expression == fausse

A priori, il faudrait préférer la deuxième possibilité. J'ai l'impression que ça fait une opération en moins (prendre le contraire de l'expression).

Il faudrait tester ça dans une grande boucle, pour voir si la différence est visible.
 
Nouveau WRInaute
Sur une boucle d'un million d'itération dans ce cas :D
Ca revient au même, et aucune des deux expressions n'est optimisée par rapport à l'autre.

Cependant comparer à FALSE en utilisant l'opérateur === est une bonne habitude à prendre (histoire d'exlure les NULL '' et autres 0)
 
WRInaute accro
Genova a dit:
Sur une boucle d'un million d'itération dans ce cas :D
Ca revient au même, et aucune des deux expressions n'est optimisée par rapport à l'autre.

C'est sur ce genre de mini opérations que sur un gros script, on gagne quelques secondes d'exécution.
Donc après, oui, il faut tester (peut être des tests existent déjà). Mais il y a forcément l'une des deux qui consomme moins de CPU. Reste à trouver laquelle ;)
 
Nouveau WRInaute
Effectivement, c'est sur ce genre d'opération qu'on gagne quelques précieuses secondes sur par exemple un algorithme de tri en C traitant des tableaux de plusieurs giga de données.

En PHP ce n'est pas comme ça qu'on gagne du temps. Ce genre d'optimisation du style ' " ne fait gagner que quelques micro secondes (et encore ..) sur des scripts avec des centaines de milliers de boucles.

Tu en connais beaucoup des sites web avec des algo aussi gourmands ? S'il y en a : autant changer de langage, le PHP sera de toute façon très lourd !

Le gain de temps en développement PHP se gagne majoritairement sur l'optimisation des requêtes SQL : index, tables bien structurées, etc ... Un développeur qui passera son temps à se demander si un ! est plus lent qu'un == FALSE n'aura rien compris aux optimisations du language PHP.
 
WRInaute passionné
Merci à tous pour vos réponses

FloBaoti a dit:
Sans vouloir dire de bétises, le point d'exclamation remplace le mot clé "not".
Ce qui fait revient à un test:
non expression == vraie
au lieu de:
expression == fausse

A priori, il faudrait préférer la deuxième possibilité. J'ai l'impression que ça fait une opération en moins (prendre le contraire de l'expression).
Je suis assez d'accord avec ton raisonnement.
De plus on peut noter que c'est peut-être plus lisible.
En étant parano on dira que ça fait un fichier source plus volumineux (j'abuse).

Genova a dit:
Cependant comparer à FALSE en utilisant l'opérateur === est une bonne habitude à prendre (histoire d'exlure les NULL '' et autres 0)
Exact (si nécessaire) !
Car le temps d'exécution sera plus long s'il faut tester le type.

Genova a dit:
Un développeur qui passera son temps à se demander si un ! est plus lent qu'un == FALSE n'aura rien compris aux optimisations du language PHP.
C'est mon coté perfectionniste, j'm'intéresse aux moindres détails parce que j'ai déjà tout compris aux optimisations :)
 
WRInaute impliqué
Je ne suis pas d'accord sur le fait que l'expression
a)e==false est plus performante que
b)!e.

J'ai été assez spécialisée dans les compilos et les interprètes autrefois et je ne crois pas que cela ait changé.

Bien sûr, dans l'absolu, pas de réponse. Mais:
1) la taille de l'expression a) est plus grande, ce qui donne un arbre syntaxique plus important.
2) heureusement qu'il s'agit d'un égal booléen sinon je vous dirai que les tests d'égalité ne sont pas performants.
3) e==false est traitée comme e1==e2 sauf s'il y a un optimiseur qui détecte qu'il s'agit de e==booléen et transforme justement l'expression e==false en not e
4) !e ne fait pas prendre la négation de l'expression : au moment de l'évaluation, il y a
i)calcul de la valeur du résultat de e puis après
ii)application de not

alors que
e==false donne
i)évaluation de e,
ii)fausse évaluation de false :wink:
iii)puis test d'égalité:

donc c'est plus long.

En résumé s'il y a un choix pas d'utilisation de == true ou false dans une expression booléenne: un optimiseur ou transformateur de programme change e==false en not e et supprime ==true de e==true tout au moins autrefois.

En aucun cas not e devient not e == true!! car le ==true toujours inutile est supprimé par l'optimiseur.

Mais je suis un dynausore en la matière maintenant alors je ne vais pas dire que je détiens la vérité d'aujourd'hui à ce sujet.
:D
 
WRInaute impliqué
Pour 1 000 000

a)
Code:
  $nb = 1000000;
  $var = true;

  for($i=0;$i<$nb;$i++)
    if(!isset($var))
      echo '';
= 0.4893s.

b)
Code:
  $nb = 1000000;
  $var = true;

  for($i=0;$i<$nb;$i++)
    if(isset($var)==FALSE)
      echo '';
= 0.7089s.


Pour 10 000 000

a)
Code:
  $nb = 10000000;
  $var = true;

  for($i=0;$i<$nb;$i++)
    if(!isset($var))
      echo '';
= 4.8117s.

b)
Code:
  $nb = 10000000;
  $var = true;

  for($i=0;$i<$nb;$i++)
    if(isset($var)==FALSE)
      echo '';
= 7.1272s.

BRAVO Bellegarde-webb !
 
Nouveau WRInaute
Je ne sais pas comment les benchmark ont été fait mais ils sont faux.

Code:
<?php

$start = microtime(true);

$nb = 10000000;
$var = true;

for($i=0;$i<$nb;$i++)
if(!isset($var))
  echo ''; 

$end = microtime(true);
echo ($end - $start) . '<br />';

$start = microtime(true);

$nb = 10000000;
$var = true;

for($i=0;$i<$nb;$i++)
if(isset($var)==FALSE)
  echo ''; 

$end = microtime(true);
echo ($end - $start) . '<br />';

?>

Me donne
2.30829820633
2.3725259304

Une optimisation de taille apparament :D
 
WRInaute impliqué
humm.. avant d'annoncer que mon bench. est faux merci de fournir un script qui donne un résultat cohérent :

-0.189081
-0.009854

ps: je n'ai pas regardé ton script, parce que je sais que le mien est bon. :wink:

ps2: PHP 4
 
Nouveau WRInaute
PHP4 est pratiquement obsolète, il faut benchmarquer sur des versions à jour.

Mon script fonctionne, mais prend en paramètre de microtime() un true (cf la doc PHP, ce paramètre est apparut en PHP5), ce qui explique pourquoi il ne tourne pas sous PHP4.

Voici une version qui marchera pour PHP4, je te laisse le loisir de tester (bien entendu le temps d'execution dépendra de la machine après, mais le rapport d'écart restera le même).

De toute façon c'est logique, en regardant ton benchmark on voit que la différence sur 10 000 000 d'itération est de ... 3 secondes ! Pas besoin de chercher bien loin pour voir qu'une simple instruction de bas niveau du langage ne peut pas engendrer un écart aussi énorme, donc tu as du faire une erreur dans ton code. Si ça ne te dérange pas de poster ton script ici que je regarde pourquoi il y a autant de différence ?

Code:
<?php

function microtime_float()
{
    list($usec, $sec) = explode(" ", microtime());
    return ((float)$usec + (float)$sec);
}

$start = microtime_float();

$nb = 10000000;
$var = true;

for($i=0;$i<$nb;$i++)
if(!isset($var))
  echo '';

$end = microtime_float();
echo ($end - $start) . '<br />';

$start = microtime_float();

$nb = 10000000;
$var = true;

for($i=0;$i<$nb;$i++)
if(isset($var)==FALSE)
  echo '';

$end = microtime_float();
echo ($end - $start) . '<br />';

?>
 
WRInaute impliqué
Genova a dit:
PHP4 est pratiquement obsolète, il faut benchmarquer sur des versions à jour.
lol PHP 4 obsolète ! ..

PHP 5 fonctionne de la même manière sauf qu'il inclut un argument en plus qui évite une manipulation supplémentaire :

Genova a dit:
Mon script fonctionne, mais prend en paramètre de microtime() un true (cf la doc PHP, ce paramètre est apparut en PHP5), ce qui explique pourquoi il ne tourne pas sous PHP4.
J'en déduis que PHP 5 est aussi obsolète .. :)

Genova a dit:
Voici une version qui marchera pour PHP4, je te laisse le loisir de tester (bien entendu le temps d'execution dépendra de la machine après, mais le rapport d'écart restera le même).
Le script que tu indique est copie conforme à ce que j'ai fait. ;)

Résultat :

4.821811914444
7.0118517875671

Genova a dit:
De toute façon c'est logique, en regardant ton benchmark on voit que la différence sur 10 000 000 d'itération est de ... 3 secondes ! Pas besoin de chercher bien loin pour voir qu'une simple instruction de bas niveau du langage ne peut pas engendrer un écart aussi énorme, donc tu as du faire une erreur dans ton code. Si ça ne te dérange pas de poster ton script ici que je regarde pourquoi il y a autant de différence ?

Késako ? :? :? :?

Le rapport de 10 montre bien que les résultats sont fiables.

Pour 1 000 000

= 0.4893s.
= 0.7089s.

Pour 10 000 000

= 4.8117s.
= 7.1272s.

Et toi, as-tu essayé le script PHP 4, quels sont tes résultats ?

Voila, donc je n'ai absolument rien de faux. :)
 
Nouveau WRInaute
Oui PHP4 est obsolète. Si tu avais pris le temps de lire le lien sur lequel pointait "Obsolète" tu aurais pu voir que l'équipe de PHP encourage très vivement tout le monde à migrer vers PHP5 (pour les rares hébergeurs pas à jour qui ne l'auraient pas encore fait), et que le support de PHP4 sera prochainement totalement arrêté ;) Quand on code, on code au gout du jour, faire un benchmark sur du PHP4 n'a aucun sens, c'est comme si tu essayais de faire un benchmark sur windows NT en voulant montrer que sur cette plate forme telle fonction est plus rapide que telle autre. D'autant plus que PHP6 sortira prochainement.

PHP5 fonctionne de la même manière ? Si pour toi une réécriture du moteur signifie fonctionner pareil alors tu n'as pas compris l'enjeu des benchmark sur les opérations élémentaires. Et d'après toi parce qu'une fonction apportée par PHP5 ne marche pas sous PHP4, ca rend PHP5 obsolète ? Est ce là le comble de la mauvaise fois :? ?

3 secondes sur 10 000 000 d'itérations sur une simple instruction du type == ou ! c'est un chiffre qui n'est pas fiable, alors que le même script executé chez moi ne donne que 0.1 secondes. Désolé de douter du sérieux de ton benchmark. Maintenant si tu cherches à tout prix à avoir raison copie moi ici ton script, je ferai les tests sous PHP4 en rentrant dans la soirée. En attendant met toi à jour si tu veux porter un minimum de crédibilité à tes propos. benchmarquer PHP4 aujourd'hui, a autant de sens que benchmarquer PHP3 à l'aube de la sortie de PHP5.
 
WRInaute impliqué
Bon beaucoup de blabla.

C'est simple, mon bench. est bon.


Genova a dit:
3 secondes sur 10 000 000 d'itérations sur une simple instruction du type == ou ! c'est un chiffre qui n'est pas fiable, alors que le même script executé chez moi ne donne que 0.1 secondes. Désolé de douter du sérieux de ton benchmark.
Alors tu douterais de ton benchmark ?

Nan sérieux, relis les posts, parce que j'ai utilisé le tiens qui est équivalent à mon script et qui donne donc les mêmes résultats. ( maintenant si tu fournis un script qui ne fonctionne pas, je n'y peu rien )

Alors avant d'affirmer que mon bench est faux on vérifie chez soit ! Parce que venir et prétendre : "Je ne sais pas comment les benchmark ont été fait mais ils sont faux." c'est un peu culotté sachant que ton seul test repose uniquement sur PHP 5 alors que j'ai indiqué suite à ta remarque que c'était sous PHP 4.

Alors c'est bien beau de se mettre à jour, mais il faut de temps en temps vérifier sur les versions précédentes avant d'affirmer quoi que ce soit !

Et oui PHP 5 est obsolète, parce qu'il ne s'agissait que d'une transition au PHP 6.

Je sais bien que moi je n'ai pas créé un FORUM ( compatible PHP 4 au passage .. ) et que je suis complètement dépassé mais je ne débarque pas en disant ça c'est faux ! Mais l'erreur est humaine.
 
WRInaute impliqué
MagicYoyo a dit:
Vous avez oublié de comparer vos hardwares et la longueur de votre *bip*.
Oui beaucoup d'oubli, c'est pour ça que je trouve que c'est un peu culotté. :x


ps : j'attends les tests sous PHP 4 obsolète ..
 
Nouveau WRInaute
et que je suis complètement dépassé mais je ne débarque pas en disant ça c'est faux ! Mais l'erreur est humaine.
Non toi tu débarques en disant ça (cf message plus haut) :
ps: je n'ai pas regardé ton script, parce que je sais que le mien est bon.
ce qui est bien pire, puisque contrairement à toi j'ai pris la peine de t'expliquer sur quoi se basait mes tests. Pas toi qui me sort des chiffres d'on ne sait pas où. Inutile de me rappeler que tu ne développes pas, j'ai eu tout le loisir de le comprendre à travers tes réponses. Bien entendu tu ne t'y connais pas, mais quand un développeur vient t'expliquer que ton benchmark est faux tu ne peux pas t'empêcher de chercher à tout prix à montrer que c'est le développeur qui se trompe :roll:

Et oui PHP 5 est obsolète, parce qu'il ne s'agissait que d'une transition au PHP 6.
:lol: tu me donnes l'autorisation de poster cette annerie sur bashfr s'ils prennent les quote de forum ?

Maintenant je ne vois qu'un seul moyen de vérifier si effectivement ton benchmark est bon : donne moi ton code que je puisse tester en plus du miens, histoire de voir si ce n'est pas le cas où il merde (les erreurs sont humaines), et s'il merde pas pourquoi il donne un temps totalement différent du miens. Comme tu dit, beaucoup de blabla, mais ça fait trois messages que j'attend toujours que tu postes ton code qui apparemment marche parfaitement contrairement au mieux :D

PS : Forum compatible avec PHP5 (et non plus PHP4) dans sa prochaine version ;)
 
WRInaute impliqué
Genova a dit:
et que je suis complètement dépassé mais je ne débarque pas en disant ça c'est faux ! Mais l'erreur est humaine.
Non toi tu débarques en disant ça (cf message plus haut) :
ps: je n'ai pas regardé ton script, parce que je sais que le mien est bon.
ce qui est bien pire, puisque contrairement à toi j'ai pris la peine de t'expliquer sur quoi se basait mes tests. Pas toi qui me sort des chiffres d'on ne sait pas où.
mdr...

Oui, je persiste et je signe mon script fonctionne..
Donc oui, je n'ai pas regardé plus que ça ton script, puisqu'il ne marche pas chez moi puisque je suis sous PHP 4 : le langage dépassé que plus personne utilise.


Genova a dit:
Inutile de me rappeler que tu ne développes pas, j'ai eu tout le loisir de le comprendre à travers tes réponses. Bien entendu tu ne t'y connais pas, mais quand un développeur vient t'expliquer que ton benchmark est faux tu ne peux pas t'empêcher de chercher à tout prix à montrer que c'est le développeur qui se trompe :roll:
lol oui je ne suis pas développeur. Je sais à peine ce que c'est que le PHP. :P

Il y a quand même des choses qui ne collent pas dans ce que tu affirme.
Comment peut tu savoir que mon bench est faux sans en avoir le code ? :lol:

Genova a dit:
Et oui PHP 5 est obsolète, parce qu'il ne s'agissait que d'une transition au PHP 6.
:lol: tu me donnes l'autorisation de poster cette annerie sur bashfr s'ils prennent les quote de forum ?
Mais avec grand plaisir.

Encore une fois, excuse moi, je ne suis pas développeur. :lol:


Genova a dit:
Maintenant je ne vois qu'un seul moyen de vérifier si effectivement ton benchmark est bon : donne moi ton code que je puisse tester en plus du miens, histoire de voir si ce n'est pas le cas où il merde (les erreurs sont humaines),
Il semblerait que tu n'aies pas tout lu....
J'ai plus trop envie de me répéter. Il semblerait que tu m'aies pris en grippe. :(

Genova a dit:
et s'il merde pas pourquoi il donne un temps totalement différent du miens.
Ce n'est pas toi qui disait que PHP 5 était totalement ré écrit ?

sinon :

- différence du pc, etc.

De toute façon tu n'as pas testé ton script sous PHP 4, il est donc impossible pour toi d'affirmer comme tu l'as fait que mon bench est faux.

Genova a dit:
Comme tu dit, beaucoup de blabla, mais ça fait trois messages que j'attend toujours que tu postes ton code qui apparemment marche parfaitement contrairement au mieux :D
Tu fais exprès, hein ? Allé c'est pas possible autrement ?!
 
Nouveau WRInaute
Super la citation que tu me files datant de quasiment 1 ans et demi :roll: (sujet dans lequel on parle des hébergeurs qui sont pas encore en PHP5 alors que la majorité des hébergeurs le sont aujourd'hui). Si tu estimes que PHP5 est une version de transition parce qu'un modérateur te l'as dit tant mieux. Le développement PHP c'est mon métier et mon hobbie depuis plusieurs années, donc pour ma part je sais de quoi je parle :roll: Enfin bon je vais arréter de débattre sur l'utilité ou pas de PHP5 avec un non développeur, c'est ridicule. C'est comme si je débattais de marques de voitures sans rien connaître d'autres que renault.

Comment peut tu savoir que mon bench est faux sans en avoir le code ?
Tout simplement parce que j'ai pris le temps de faire le benchmark moi même et que les résultats ne collent pas ... par contre je comprend pas pourquoi tu persistes à prétendre que tu as raison et que dès que je te demande ton script tu te contentes de répondre par "Tu fais exprès, hein ? Allé c'est pas possible autrement ?!" ou par "j'ai utilisé en gros le même script que toi" enfin tu vois.

Si ça se trouve j'ai fait une connerie quelque part, si j'ai tort je l'admettrai, mais je tiens simplement à le vérifier. File moi le code source que tu as utilisé pour sortir tes chiffres, et je lancerai les deux programmes (le tiens et le miens), et je verrai d'où sort le résultat bizare. Je ferai le test sous PHP4 et PHP5 (j'ai les deux versions chez moi), et je te sort tous les résultats que tu veux ce soir de toute façon. Je pousserai même le vice en refaisant les benchmark en utilisant une classe de benchmark officielle et en la testant sous PHP4 et PHP5, histoire que tu me dises pas que c'est mon code qui plante.

A ce soir :twisted:
 
WRInaute impliqué
Genova a dit:
Super la citation que tu me files datant de quasiment 1 ans et demi :roll: (sujet dans lequel on parle des hébergeurs qui sont pas encore en PHP5 alors que la majorité des hébergeurs le sont aujourd'hui). Si tu estimes que PHP5 est une version de transition parce qu'un modérateur te l'as dit tant mieux. Le développement PHP c'est mon métier et mon hobbie depuis plusieurs années, donc pour ma part je sais de quoi je parle :roll: Enfin bon je vais arréter de débattre sur l'utilité ou pas de PHP5 avec un non développeur, c'est ridicule. C'est comme si je débattais de marques de voitures sans rien connaître d'autres que renault.
pfff, il te faut un dire plus récent ?

Je suis sûr qu'au moins une personne à compris ce que je voulais dire. ps : je ne sais pas par contre si c'est un pro-développeur, ceci expliquerais cela. M'enfin là n'est pas la question il me semble, alors inutile de jouer sur les mots, j'ai compris que tu es un pro-développeur et moi un moins que rien.


Genova a dit:
Comment peut tu savoir que mon bench est faux sans en avoir le code ?
Tout simplement parce que j'ai pris le temps de faire le benchmark moi même et que les résultats ne collent pas ...
Ah oui ! Humm .. donc c'est mon bench qui est faux.. Humm je vois, je vois.

Genova a dit:
par contre je comprend pas pourquoi tu persistes à prétendre que tu as raison et que dès que je te demande ton script tu te contentes de répondre par "Tu fais exprès, hein ? Allé c'est pas possible autrement ?!" ou par "j'ai utilisé en gros le même script que toi" enfin tu vois.
:?: :?: :?: ah ben nan tu ne le fais pas exprès !

J'ai pourtant indiqué plusieurs fois que le script que tu as indiqué en PHP 4 et identique à celui que j'ai fait et en plus bonne nouvelle il donne les mêmes résultats ! Waouh ! Faut que je te fasse un copié / collé du même script déjà indiqué sur ce post ? Nan parce que la je ne comprend plus.......

Genova a dit:
Si ça se trouve j'ai fait une connerie quelque part, si j'ai tort je l'admettrai, mais je tiens simplement à le vérifier. File moi le code source que tu as utilisé pour sortir tes chiffres, et je lancerai les deux programmes (le tiens et le miens), et je verrai d'où sort le résultat bizare. Je ferai le test sous PHP4 et PHP5 (j'ai les deux versions chez moi), et je te sort tous les résultats que tu veux ce soir de toute façon. Je pousserai même le vice en refaisant les benchmark en utilisant une classe de benchmark officielle et en la testant sous PHP4 et PHP5, histoire que tu me dises pas que c'est mon code qui plante.

A ce soir :twisted:
Avec plaisir. Je suis impatient d'avoir de tes nouvelles parce que sincèrement tu m'as pris en grippe pour vraiment rien... :roll:

A ce soir. :wink:
 
Nouveau WRInaute
J'ai l'impression que tu te moques de moi en fait, tu me renvoies vers un message de la même personne. Encore heureux qu'il se contredit pas entre ses deux messages :lol:

Connais tu les différences entre PHP4 et PHP5 (sans aller les chercher sur un site, c'est juste pour savoir si tu sais de quoi tu parles). Ensuite connais tu les différences entre PHP5 et PHP6 ?

En tout cas la personne qui cite ceci :
PHP5 est une version de transition avant PHP6, qui sera un véritable langage objet.
semble ne pas savoir de quoi elle parle, ou du moins a fait une erreur sur ce coup là. Car les ajouts de PHP6 je peux te les citer, et sans aller les chercher sur internet, et en aucun cas la POO de PHP6 sera une évolution (mise à part l'ajout des namespace, ajout qui je précise vient tout juste d'être voté ;)). La révolution de PHP en terme de POO a été PHP5, et PHP5 n'est clairement pas une version transitoire (à ce moment là PHP4 était une transition vers PHP5 :lol:).

Bref fin du blabla voilà la série de test que tu attends :

Sous PHP4 :
Résultat calcul 1 : 7.69019498825
Résultat calcul 2 : 9.74630212784

Sous PHP5
Résultat calcul 1 : 2.96072001457
Résultat calcul 2 : 3.21549892426

Donc effectivement sous PHP4 le temps d'écart est assez important, tu avais raison de ce côté là. J'avais raison aussi puisque le temps sous PHP5 est celui que j'avais donné. Dans tous les cas ce benchmark confirme largement ce qui a été dit plus haut : PHP4 est obsolète, la différence d'optimisation du moteur n'est pas comparable, il y a casiment 300% de gain de vitesse.

Dans tous les cas si je t'ai pris en grippe, c'est pour deux raisons :
1) Lorsque j'ai prétendu que ton benchmark était faux tu as même pas cherché à savoir s'il l'étais ou pas
2) Les différentes conneries racontées sur PHP5 dans ce sujet : il faut savoir de quoi on parle avant de dire que PHP5 est une version de transition.

Bref fin du débat pour ma part, vive la rapidité de PHP5 :D

PS : la classe de test (marche sous PHP4 et 5)
Code:
<?php

// Classe pour les benchmarks
class Benchmark
{
	var $start;
	var $end;

	function Benchmark()
	{
		$this->start();
	}

	function get_time()
	{
		list($usec, $sec) = explode(" ", microtime());
		return ((float)$usec + (float)$sec);
	}

	function start()
	{
		$this->start = $this->get_time();
	}

	function end()
	{
		$this->end = $this->get_time();
	}

	function result($str)
	{
		$this->end();
		echo 'Résultat ' . $str . ' : ' . ($this->end - $this->start) . '<br />';
	}
}

// Initialisation des deux variables qui nous interessent
$nb = 10000000; 
$var = true;

// Premier calcul
$bench = new Benchmark();

for($i=0;$i<$nb;$i++) 
if(!isset($var)) 
  echo '';

$bench->result('calcul 1');

// Second calcul
$bench = new Benchmark();

for($i=0;$i<$nb;$i++) 
if(isset($var)==FALSE) 
  echo '';

$bench->result('calcul 2');

?>
 
WRInaute impliqué
Genova a dit:
J'ai l'impression que tu te moques de moi en fait, tu me renvoies vers un message de la même personne. Encore heureux qu'il se contredit pas entre ses deux messages :lol:
Non, simplement tu disais :
Genova a dit:
Super la citation que tu me files datant de quasiment 1 ans et demi :roll:
Donc, tu vois bien que c'était idiot de jouer sur la date.


Genova a dit:
Bref fin du blabla voilà la série de test que tu attends :

Sous PHP4 :
Résultat calcul 1 : 7.69019498825
Résultat calcul 2 : 9.74630212784

Sous PHP5
Résultat calcul 1 : 2.96072001457
Résultat calcul 2 : 3.21549892426

Donc effectivement sous PHP4 le temps d'écart est assez important, tu avais raison de ce côté là. J'avais raison aussi puisque le temps sous PHP5 est celui que j'avais donné. Dans tous les cas ce benchmark confirme largement ce qui a été dit plus haut : PHP4 est obsolète, la différence d'optimisation du moteur n'est pas comparable, il y a casiment 300% de gain de vitesse.
Ah enfin !

J'avais donc raison en insistant et signant lorsque je disais que mon bench était bon ! Et je n'ai jamais dis que TON bench était mauvais, d'ailleurs, j'ai même souligné que cela pouvait être dû à la version, lorsque tu à indiquer que PHP 5 était totalement ré écrit..

Genova a dit:
Dans tous les cas si je t'ai pris en grippe, c'est pour deux raisons :
1) Lorsque j'ai prétendu que ton benchmark était faux tu as même pas cherché à savoir s'il l'étais ou pas
Simplement parce que j'étais sûr de moi et j'avais raison de l'être...
( je l'utilise depuis un moment donc je sais encore quel script j'ai de fiable, stable, en test, etc. )

Alors prétendre que j'ai tout faux... mais tu comprends que ce n'est pas plaisant.

Genova a dit:
2) Les différentes conneries racontées sur PHP5 dans ce sujet : il faut savoir de quoi on parle avant de dire que PHP5 est une version de transition.
Entendons nous, moi je considère et je l'entends comme ça : PHP 5 est pour moi une version de transition.

Pourquoi ?

est-ce que beaucoup ont utilisé PHP 5 ? Combien utiliseront PHP 6 ?
Est-ce que PHP 6 sera en place plus longtemps que PHP 5.

Voila la raison... maintenant fallait pas s'emporter pour si peu hein.
C'était simplement une visions des choses.

Je ne suis pas un super-pro, certes mais je connais plus ou moins les différences en PHP 4 -> PHP 5 -> PHP 6, je me renseigne un peu aussi.. mais pour moi la question de transition n'avait aucun rapport avec ce qu'est capable de faire tel ou tel version.

Genova a dit:
Bref fin du débat pour ma part, vive la rapidité de PHP5 :D
Nous sommes d'accord.. vive le progrès !

Mais c'est quand même dommage que ce post ait tourné ainsi... :(
 
WRInaute occasionnel
J'ajoute mon grain de sel ( parce que la question m'intéresse, pas pour mettre ma mer**** )

Genova, tu dis avoir php4 et 5 chez toi ?

Je me permets de te faire l'offense de te demander si, par hasard, l'un d'entre eux tournerait en CGI et l'autre en module ?
 
Nouveau WRInaute
Bonjour NextGeneration,
non, j'ai testé en local avec Wamp : Wamp dispose d'une extension permettant de switcher entre PHP4 et PHP5 en 2 secondes.
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut