Dar*_*ein 15 php arrays if-statement
执行以下操作更快:
if ($var != 'test1' && $var != 'test2' && $var != 'test3' && $var != 'test4') { ... }
Run Code Online (Sandbox Code Playgroud)
要么:
if (!in_array($var, array('test1', 'test2', 'test3', 'test4') { ... }
Run Code Online (Sandbox Code Playgroud)
是否有许多值,在这一点上做一个或另一个更快?
(在这种情况下,第二个选项中使用的数组并不存在.)
Owe*_*wen 17
我强烈建议使用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
Run Code Online (Sandbox Code Playgroud)
需要注意的微不足道的注意事项,如果$var
未设置,方法1需要更长时间(取决于您测试的条件数)
第一个会更快 - 第二个会有很多开销:创建数组,调用函数,搜索数组......
然而,正如我在一个问题中提到的几个答案,过早的优化是所有邪恶的根源.您应该将代码编写为可读,然后如果需要对其进行优化配置,则进行优化.
编辑:
我的时间与@ Owen的代码(PHP 5.2.6/windows):
Time1: 1.33601498604
Time2: 4.9349629879
Run Code Online (Sandbox Code Playgroud)
在循环内移动数组(...),如问题所示:
Time1: 1.34736609459
Time2: 6.29464697838
Run Code Online (Sandbox Code Playgroud)
这是此长凳与另一个案例的实时更新https://3v4l.org/OA2S7
PHP 7.3 的结果:
多重比较:0.0575 07991790771
数组中:0.0256 8507194519
array_flip() 外循环测量 + isset(): 0.0146 78001403809
array_flip() 外部循环未测量 + isset(): 0.0156 50033950806
foreach 和比较:0.0627 82049179077
归档时间: |
|
查看次数: |
9540 次 |
最近记录: |