在 PHP 中 switch
陈述,将更多常见案例放在顶部附近会提高性能吗?
例如,假设以下函数被调用了 1,000 次:
<?php
function foo_user ($op) {
switch ($op) {
case 'after_update':
//Some Stuff
case 'login':
//Some other Stuff
}
}
如果函数被调用的 1,000 次中有 990 次 $op 参数是“login”,那么通过使用 case: 'login'
会提高性能吗?以上case 'after_update':
在switch
陈述?例如,case 'after_update':
之后的代码如果$op = login
被忽略通过了吗?
我已经对这个想法进行了一些非正式测试,但差异可以忽略不计——可能是因为 case: 'login'
之后的代码和 case 'after_update':
都是微不足道的。如果有人完全知道答案,我宁愿避免使用非平凡的操作来设置更广泛的测试。
这是一个具体的 Drupal 问题,但我想任何熟悉优化 PHP 的人都可以解决这个问题。
最佳答案
这很可能被称为微优化。我不相信会有很大的不同。
但是,如果您允许 case 失败,则顺序对于 switch case 的逻辑来说确实意义重大,例如
switch ($var) {
case 0:
case 1:
do_it();
break;
case 2:
do_it_else();
break;
}
顺序很重要,案例将失败并执行任何代码,直到遇到中断。
我不会担心 switch case 的速度,除非你说有 100 种可能的情况。但如果那样的话,您可能应该重构您的代码。
关于php - 在 PHP switch 语句中,case 的顺序重要吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1125139/