Pourquoi ===
plus vite que ==
en PHP?
Réponses
Trop de publicités?Il y a deux choses à considérer:
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.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
- où
$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.
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