Php 如何加速这种方法?

Php 如何加速这种方法?,php,cakephp,Php,Cakephp,我使用的是CakePHP 2.3(高度优化/改编版),我的应用程序运行在非常慢的硬件(300MHz ARM)上,因此我仍在尽可能地优化。框架的一种方法调用频率很高,速度也不是很快(~0.5-1ms),但我想不出一种改进方法(在不改变输出的情况下)——总的来说,我在这种方法中花费了~5%的时间: function pluginSplit($name, $dotAppend = false, $plugin = null) { if (strpos($name, '.') !== false

我使用的是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%:

(分析速度比正常执行速度慢10-15倍-->8.8ms约为~0.5-1ms,不使用分析程序)

只是一点改进,不需要搜索字符串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);
}

Cake的资源需求通常不适合低端硬件环境。你确定这是适合这项工作的工具吗?@GeorgeCummins:CakePHP之所以被选中,有几个原因,我已经剥离了这个框架,所以它“快多了”,但有些“慢方法”我就是摆脱不了。。。(你是否因此否决了投票?如果不是,请解释否决票,以便我可以改进)我没有否决你的问题。只是一个建议:也许你会收到比这里更多的答案,因为你希望优化代码。@Nunser:谢谢你的提示-我不知道(部分)以前的站点…这意味着每次都会调用explode-大多数情况下,调用此方法时使用的字符串中没有点。因此,这不太可能提高性能,更可能会产生负面影响。我不这么认为,因为“strpos占用了大约5%的方法时间,爆炸式增长了约1%”。如果找到一个点,你搜索它2次(用我的解决方案搜索一次)。如果未找到点,则搜索一次(两个版本)。读取此方法的版本,每次都会传递输入字符串以进行分解。strpos调用是为了避免不必要地调用explode,而这种方法的编写方式是由于广泛的分析。