在性能方面,哪一个最好,或切换或三元?

时间:2015-05-30 07:35:01

标签: php

我是PHP的新手。

在PHP中有3个条件结构

  1. IF 2.SWITCH 3. TERNARY
  2. 在这3个中哪一个最能提高程序性能?

    请告诉我我们需要优先选择IF或SWITCH或TERNARY以及为什么?

    它如何根据条件提高性能以及执行时间是多少?

2 个答案:

答案 0 :(得分:3)

使用any没有性能问题。 这取决于使用的情况。 如果条件不是很复杂,则使用三元运算符

LIKE: -

$num = $num == 1?'yes':'no'

最好使用三元运算符来减小代码大小,但对于更复杂的条件,它可能会变得混乱,因此,如果

大多数情况下,当条件相同时,应使用开关。 喜欢

if($num == 1 || $num == 2 || $num == 3 || $num == 5 || $num == 7 || $num == 11 ) {
    // do something
}

在这种情况下如果应该用switch替换,因为它会使代码更清晰

答案 1 :(得分:-1)

我做了一个小测试,看起来三元运算符总是比常规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