2011-11-17 3 views
0

J'écris une fonction où il y a beaucoup de comparaisons is_int ($ var). Mais $ var ne peut être que de deux types: soit entier, soit booléen faux.

Je me demandais quelle fonction a été le plus rapide:

if (is_int($var)) {} 

ou

if ($var!==false) {} 

ou

if (!($var===false)) {} 

Toute idée?

+2

Ce sont des micro optimisations dont vous ne devriez pas vous inquiéter. –

+0

1/10000 sec vs 2/10000 sec vs 3/10000 sec –

+0

Je suis d'accord avec Xeon. Vous ne devriez pas vous inquiéter d'une telle expression micro dans ** le langage de script ** – Peter

Répondre

6

évidemment réponse est

if ($var!==false) {} 

est plus rapide que la fonction, et une expression booléenne est plus rapide que deux expressions booléennes.

+0

Ceci est correct. Mes repères suggèrent que la différence est d'environ 40%. Ce qui est 0.6 secondes pour un million d'itérations. Donc ce que vous pourriez appeler "négligeable". – lonesomeday

1

et une expression booléenne est plus rapide que deux expressions booléennes.

Ne faites jamais d'hypothèses en ce qui concerne l'analyse comparative. Je mesure:

  • if ($var!==false) {} avec un int: 1,417324
  • if ($var!==false) {} avec un booléen: 1,432197
  • if (!($var===false)) {} avec un int: 1,414805
  • if (!($var===false)) {} avec un booléen: 1,421146
+0

Heh, ok ok, donc c'est de la micro-optimisation de toute façon. :) –

+0

Faire référence quelques fois. Je pense qu'après '1.4' vous pouvez trouver le nombre aléatoire :))) – Peter

+0

Heh ouais, c'est ce que je voulais dire. Il n'y a pas de différence significative, comme on pouvait s'y attendre avec deux fois plus d'opérateurs.Je suppose que l'optimiseur reconnaît la situation et en fait essentiellement l'exemple précédent. –

Questions connexes