为什么在PHP中===比==快?

为什么在PHP中=====快?

因为相等运算符==强制或暂时转换数据types以查看它是否与另一个操作数相等,而=== (身份运算符)不需要进行任何转换,因此工作量减less,从而使其更快。

===不执行types转换,所以0 == '0'计算结果为true ,但0 === '0'false

首先,===检查两个参数是否是相同的types – 所以在实际执行比较之前,数字1和string“1”在types检查上失败。 另一方面,==不会首先检查types,然后将两个参数转换为相同的types,然后进行比较。

因此,===更快地检查失败情况

有两件事情要考虑:

  1. 如果操作数types不同,则=====产生不同的结果 。 在这种情况下,运营商的速度并不重要, 重要的是哪一个产生预期的结果。

  2. 如果操作数types相同,则可以使用=====因为两者都会产生相同的结果 。 在这种情况下,两个运营商的速度几乎相同。 这是因为任何一个操作员都不能执行types转换。

我比较的速度是:

  • $a == $b vs $a === $b
  • $a$b是随机整数[1,100]
  • 这两个variables生成并比较了一百万次
  • testing运行了10次

结果如下:

  $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 

你可以看到速度几乎相同。

我真的不知道它是否显着更快,但是===在大多数语言中是直接types比较,而==会尝试在必要/可能的情况下进行types强制来获得匹配。

在比较之前,==会带来更大的types转换开销。 ===首先检查types,然后继续而不必进行任何types转换。

因为===在比较它们之前不需要强制操作数是相同的types 。

我怀疑速度的差异是非常多的。 在正常情况下,您应该使用更合理的操作符。

总之===更快,因为不转换数据types来查看两个variables是否具有相同的值,但是当您需要查看两个variables是否具有相同的值时,您将使用==如果doesen't mather什么types是variables,或===如果重要的话也是variables的types。

如果testing结果是正确的,那么它一定是一个编译器问题,

处理器将在一个时钟周期内完成所要求的任务

如果做得less,那么做起来会更快

加成:

实际上,如果编译器已经创build了大量的机器代码来处理,那么如果它已经添加了大量的东西来处理需要比较的数据types,那么删除一个“次要”IF将不会改变速度在所有。

如果有人仍然读这个,那么我有兴趣进行更多的讨论。

菲尔