0

私は (高度に最適化されたバージョンの) CakePHP 2.3 を使用しており、私のアプリケーションは非常に遅いハードウェア (300MHz ARM) で実行されているため、可能な限り最適化を続けています。フレームワークの 1 つのメソッドは非常に頻繁に呼び出され、それほど高速ではありません (~0.5-1 ミリ秒) が、(出力を変更せずに) それを改善する方法を思いつきません - 合計で、合計時間の ~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 です)

4

1 に答える 1

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);
}
于 2013-06-05T11:31:52.520 に答える