Pourquoi est - = = = plus rapide que l' == en PHP?
Pourquoi est ===
plus vite que ==
en PHP?
- Il est plus rapide, mais il est nettement plus rapide?
- S'il vous plaît ne pas lire à propos de ce qui est plus rapide en php. Lisez à propos de la façon d'obtenir des données intéressantes dans une seule requête SQL sans abuser de Jointures.
- À qui pourraient être intéressés par le même sujet
=== vs ==
, mais en JAVASCRIPT, peut lire ici: stackoverflow.com/questions/359494/... - ce n'est pas la question
- Juste point - c'est pourquoi je ne l'ai commenté sur ce. Il ne répond pas à la question, mais donne une perspective sur elle.
Vous devez vous connecter pour publier un commentaire.
Parce que l'opérateur d'égalité
==
contraint, ou convertit le type de données temporairement pour voir si elle est égale à l'autre opérande alors que===
( identité opérateur ) n'a pas besoin de faire une conversion que ce soit et donc de moins en moins le travail est fait, le rendant plus rapide.===
ne pas effectuer typecasting, donc0 == '0'
évalue àtrue
, mais0 === '0'
- àfalse
.D'abord, === vérifie si les deux arguments sont les mêmes type - de sorte que le nombre 1 et la chaîne de caractères '1' échoue sur la vérification de type avant toute comparaison de la réalité. D'autre part, == ne vérifie pas le type de premier et va de l'avant et convertit les deux arguments du même type et fait ensuite la comparaison.
Par conséquent, === est plus rapide à la vérification de l'échec de la condition
==
vérifie également le type d'abord pour voir si n'importe quel type de conversion doit être fait. Le fait que===
ne fait pas de conversion dans l'étape suivante est ce qui le rend plus rapide.Il y a deux choses à considérer:
Si l'opérande types sont différents alors
==
et===
produire des résultats différents. Dans ce cas, la vitesse des opérateurs n'a pas d'importance; ce qui importe est celle qui produit le résultat souhaité.Si l'opérande types de sont même, alors vous pouvez utiliser
==
ou===
que les deux vont produire 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]Et voici les résultats:
Vous pouvez voir que la vitesse est presque identique.
Je ne sais pas vraiment si c'est nettement plus rapide, mais === dans la plupart des langues est une conséquence directe de type de comparaison, alors que == va essayer de faire de ce type de coercition si nécessaire/possible pour gagner un match.
L' == subit des plus grands généraux de la conversion de type avant comparaison. === vérifie d'abord le type, puis le produit sans avoir à faire n'importe quel type de conversion.
Parce que
===
n'a pas besoin de forcer les opérandes de même type avant de les comparer.Je doute que la différence de vitesse est très très bien. Dans des circonstances normales, vous devez utiliser n'importe quel opérateur plus de sens.
En conclusion === est plus rapide car ne convertit le type de données pour voir si les deux variables ont la même valeur, mais quand vous avez besoin de voir si deux variables ont la même valeur, vous allez utiliser == si doesen " mather ce type sont variables, ou === si est important de également le type de variables.
Plus rapide ne doit pas seulement être mesurée en direct temps d'exécution (direct les tests de performances sont presque négligeable dans ce cas). Cela dit, j'aurais besoin de voir un test de l'itération ou la récursivité, pour vraiment voir si il y a une importante différence cumulative (lorsqu'il est utilisé dans un contexte réaliste). Le test et le débogage de temps que vous gagnerez lorsque vous traitez avec des cas limites doivent avoir du sens pour vous, aussi
Si les résultats des tests sont corrects, alors il doit être un compilateur problème,
Le processeur va faire tout ce qu'il est dit de le faire sur un cycle d'horloge
Si elle a moins de le faire alors il sera plus rapide de le faire
Plus:
Ah bon, en fait, si le compilateur a déjà créé des charges de la machine de traitement du code, puis si on a déjà ajouté des milliards de trucs à faire face à ce type de données, les besoins de la comparaison, alors que la suppression d'un "mineur" SI pas de changement de vitesses beaucoup à tous.
Si quelqu'un lit encore ce sont ensuite je suis intéressé par de plus amples discussions.
Phil