php - 在 PHP switch 语句中,case 的顺序重要吗?

标签 php optimization drupal micro-optimization

在 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/

相关文章:

php - 获取 xml 的 xmlSchema?

php - 在 MySQL 列中查找最大值

php - 在命令中调用控制台命令并在 Symfony2 中获取输出

optimization - 如何强制mysql在特定时间段内缓存查询?

django - 适用于应用程序的 Drupal、CodeIgniter、Yii 或 Django

jquery - 德鲁帕尔 6 : best way to upgrade jQuery?

drupal - 如何在 Drupal 7 上翻译日期格式?

PHP从文件中读取和写入JSON

c# - 尝试求和时 LINQ 与 foreach

计算快速对数基数 2 上限