174 votes

Pourquoi === est-il plus rapide que == en PHP?

Pourquoi === plus vite que == en PHP?

210voto

meder Points 81864

Parce que l'opérateur d'égalité == coercitif ou convertit temporairement le type de données pour voir s'il est égal à l'autre opérande alors que === (opérateur d'identité) n'a pas besoin de convertir donc moins de travail est fait, le rendant plus rapide.

57voto

Raveren Points 4772

=== n'effectue pas de typage, donc 0 == '0' évalue à true , mais 0 === '0' - à false .

27voto

Salman A Points 60620

Il y a deux choses à considérer:

  1. Si l'opérande types sont différents, == et === produire des résultats différents. Dans ce cas, vous n'avez pas le choix, vous devez utiliser l'une ou l'autre.

  2. Si l'opérande types de sont même, alors vous pouvez utiliser == ou === que les deux vont produire les mêmes résultats. Dans ce cas, la vitesse de ces deux opérateurs est presque identique. C'est parce qu'aucune conversion de type est effectuée par les opérateurs.

J'ai comparé la vitesse de:

  • $a == $b vs $a === $b
  • $a et $b étaient aléatoires entiers [1, 100]
  • les deux variables ont été générées et comparées à un million de fois
  • les tests ont été exécutés 10 fois

Et voici les résultats:

 $a == $b $a === $b
--------- ---------
 0.765770  0.762020
 0.753041  0.825965
 0.770631  0.783696
 0.787824  0.781129
 0.757506  0.796142
 0.773537  0.796734
 0.768171  0.767894
 0.747850  0.777244
 0.836462  0.826406
 0.759361  0.773971
--------- ---------
 0.772015  0.789120

Vous pouvez voir que la vitesse est presque identique.

26voto

iblamefish Points 1467

Premièrement, === vérifie si les deux arguments sont du même type . Par conséquent, le nombre 1 et la chaîne "1" échouent lors de la vérification du type avant que les comparaisons ne soient réellement effectuées. D'autre part, == ne vérifie pas le type en premier et va de l'avant et convertit les deux arguments dans le même type et effectue ensuite la comparaison.

Par conséquent, === est plus rapide à vérifier une condition d'échec

7voto

Chris Points 14136

Je ne sais pas vraiment si c'est beaucoup plus rapide, mais === dans la plupart des langues est une comparaison directe de type, tandis que == essaiera de faire de la coercition si nécessaire / possible pour obtenir une correspondance.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X