gpt4 book ai didi

php - 哪个更快 : in_array() or a bunch of expressions in PHP?

转载 作者:IT王子 更新时间:2023-10-29 00:20:45 24 4
gpt4 key购买 nike

执行以下操作是否更快:

 if ($var != 'test1' && $var != 'test2' && $var != 'test3' && $var != 'test4') { ... }

或者:

 if (!in_array($var, array('test1', 'test2', 'test3', 'test4') { ... }

是否有多个值可以使执行其中一个或另一个更快?

(在这种情况下,第二个选项中使用的数组并不存在。)

最佳答案

我强烈建议只使用 in_array(),任何速度差异都可以忽略不计,但单独测试每个变量的可读性非常糟糕。

只是为了好玩,这是我运行的测试:

$array = array('test1', 'test2', 'test3', 'test4');
$var = 'test';
$iterations = 1000000;

$start = microtime(true);
for($i = 0; $i < $iterations; ++$i) {
if ($var != 'test1' && $var != 'test2' && $var != 'test3' && $var != 'test4') {}
}
$end = microtime(true);

print "Time1: ". ($end - $start)."<br />";

$start2 = microtime(true);
for($i = 0; $i < $iterations; ++$i) {
if (!in_array($var, $array) ) {}
}
$end2 = microtime(true);

print "Time2: ".($end2 - $start2)."<br />";

// Time1: 1.12536692619
// Time2: 1.57462596893

需要注意的一点小注意事项,如果未设置 $var,方法 1 需要更长的时间(取决于您测试的条件数量)

更新 PHP 版本:

Martijn:我已将数组扩展到五个 元素,并寻找test3,作为一种平均情况。

PHP5.6

Time1: 0.20484399795532
Time2: 0.29854393005371

PHP7.1

Time1: 0.064045906066895
Time2: 0.056781053543091

PHP7.4

Time1: 0.048759937286377
Time2: 0.049691915512085

PHP8.0

Time1: 0.045055150985718
Time2: 0.049431085586548

结论:最初的测试不是最好的测试,而且:在 php7+ 中,它已成为偏好问题。

关于php - 哪个更快 : in_array() or a bunch of expressions in PHP?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/324665/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com