如果有至少10-20个条件,那么switch或If语句是否可以快速执行
由于 戴夫
答案 0 :(得分:3)
This person对此进行了基准测试并得出结论:“if / else稍好一些。”代码和基准包括在内。
This benchmark得出结论认为它们大致相同。
答案 1 :(得分:2)
使用其中一个可能略有不同,但对于10-20个条件,我认为开关案例可能更具可读性和更适合。
答案 2 :(得分:1)
我一直被告知,对于超过4或5个条件,您应该几乎总是使用switch
而不是if
/ else
/ else if
结构 - 我可能会但是错了。
我怀疑Jordan提供的(第一个)链接,我认为如果使用得当switch
应该稍快一些,我没有硬数据支持它,但你总是可以自己对它进行基准测试。如果您不应该使用switch
,则需要进行严格(===
)比较。
无论如何,关键是这是微优化,我更喜欢有一个可读的,漂亮的(女孩风格的)代码,可能花费0.000001秒而不是丑陋的代码。
对于10-20个条件,您一定要使用switch
IMO。
答案 3 :(得分:1)
如果不进一步了解问题的本质,我猜你在这里显然是在优化错误的东西。
唯一的情况是,如果您循环遍历大型数据集并根据一个特定数据字段的内容决定执行不同的操作,则条件的速度将是相关的。
如果你对每个数据集做了很多事情,那么条件的成本应该与每个循环迭代的速度无关,你应该优化可读性并使用switch语句。
如果你在每次迭代中做的很少但是必须做一百万次,那么你应该以不同的方式去做:
foreach($alldata as $index => $dataset)
{
$function_to_call = 'handle_'.$dataset->switching_value;
if (function_exists($function_to_call))
$function_to_call($dataset);
}