如何加快这种方法?

时间:2013-06-05 11:10:21

标签: php cakephp

我正在使用(高度优化/改编版本)CakePHP 2.3,我的应用程序运行在非常慢的硬件(300MHz ARM)上,所以我仍然在尽可能优化。框架的一种方法经常被称为非常快(约0.5-1ms),但我想不出一种方法来改进它(不改变输出) - 总共花费约5%的总时间这个方法:

function pluginSplit($name, $dotAppend = false, $plugin = null) {
    if (strpos($name, '.') !== false) {
        $parts = explode('.', $name, 2);
        if ($dotAppend) {
            $parts[0] .= '.';
        }
        return $parts;
    }
    return array($plugin, $name);
}

有没有人知道如何加快速度?

根据探查器strpos占用大约5%的方法时间并爆炸~1%: enter image description here
(分析比正常执行慢大约10-15倍 - > 8.8ms在没有分析器的情况下大约为0.5-1ms)

1 个答案:

答案 0 :(得分:1)

稍微改进一下,不要搜索字符串2次:

function pluginSplit($name, $dotAppend = false, $plugin = null) {
  if (count($parts = explode('.', $name, 2)) === 2) {
    if ($dotAppend) {
      $parts[0] .= '.';
    }
    return $parts;
  }
  return array($plugin, $name);
}