Php 在性能方面,哪一个是最好的如果或开关或三元?
我是PHP新手 在PHP中有3种条件结构Php 在性能方面,哪一个是最好的如果或开关或三元?,php,Php,我是PHP新手 在PHP中有3种条件结构 如果2.3号开关。三元 在这三种方法中,哪一种最能提高程序性能 请告诉我在哪些条件下我们需要优先选择IF或SWITCH或trimal,以及为什么 它是如何根据条件提高性能的?它的执行时间是多少 我做了一个小测试,三元运算符似乎总是比常规if语句慢一点。差别非常小,因此从总体上看,它应该会对应用程序性能产生很大影响 // small data $data['test'] = 1; $start = microtime(); for ($i = 0; $i
它是如何根据条件提高性能的?它的执行时间是多少 我做了一个小测试,三元运算符似乎总是比常规if语句慢一点。差别非常小,因此从总体上看,它应该会对应用程序性能产生很大影响
// small data
$data['test'] = 1;
$start = microtime();
for ($i = 0; $i < 1000000; $i++) {
if (true) {
$tmp = $data['test'];
}
}
microtime() - $start; // 0.529772
$start = microtime();
for ($i = 0; $i < 1000000; $i++) {
$tmp = true ? $data['test'] : false;
}
microtime() - $start; // 0.591775
// for 'large' data
$data['test'] = [];
for ($i = 0; $i < 1000000; $i++) {
$data['test'][] = $i;
}
$start = microtime();
for ($i = 0; $i < 1000000; $i++) {
if (true) {
$tmp = $data['test'];
}
}
microtime() - $start; // 0.181477
$start = microtime();
for ($i = 0; $i < 1000000; $i++) {
$tmp = true ? $data['test'] : false;
}
microtime() - $start; // 0.277483
//小数据
$data['test']=1;
$start=microtime();
对于($i=0;$i<1000000;$i++){
如果(真){
$tmp=$data['test'];
}
}
microtime()-$start;//0.529772
$start=microtime();
对于($i=0;$i<1000000;$i++){
$tmp=true?$data['test']:false;
}
microtime()-$start;//0.591775
//对于“大型”数据
$data['test']=[];
对于($i=0;$i<1000000;$i++){
$data['test'][]=$i;
}
$start=microtime();
对于($i=0;$i<1000000;$i++){
如果(真){
$tmp=$data['test'];
}
}
microtime()-$start;//0.181477
$start=microtime();
对于($i=0;$i<1000000;$i++){
$tmp=true?$data['test']:false;
}
microtime()-$start;//0.277483
使用任何一种方法都不会出现性能问题。
这取决于使用哪一种方法的情况。
如果条件不是很复杂,则使用三元运算符
比如:-
$num = $num == 1?'yes':'no'
最好使用三元运算符来减少代码大小,但对于更复杂的条件,它可能会变得混乱,因此,如果
开关应在大多数情况下条件相同时使用。
像
在这种情况下,if应该替换为switch,因为它使代码更干净这不是一个有效的答案。。你写了7个字,给了一个可能下周不存在的第三方网站的链接,不会给任何人提供任何价值。我的错,我对这个网站很陌生,我将更新我的答案。在任何情况下,速度差异都将非常小,除非您在一次运行中处理数百万个数据点,否则不会产生任何真正的差异。你基本上是在说一个,过早的优化。我同意@GordonM和Ashwani的观点。如果您得到任何条件,则条件不会成为您的性能问题。代码可读性要重要得多。在上一个例子中,我认为用您感兴趣的值填充数组并在数组中使用是一个更好的选择<代码>如果(在数组中($num,[1,2,3,5,7,11]){/*做点什么*/}它更可读,更简洁。是的,这是一个很好的观点。我认为在这种情况下,在_array()over switch中使用会很好。因为使用any将在执行时间上产生微小的差异。
if($num == 1 || $num == 2 || $num == 3 || $num == 5 || $num == 7 || $num == 11 ) {
// do something
}