zaininnari - php/高速化

「===」を使用する

「==」を使用した場合、値が比較される。
型キャストが自動的に行われる。
「"0" == 0」の場合は、型キャスト(型の変換)が行われ、結果は、「true」となる。
そのため、型キャストにはコストがかかるため、遅くなる。

「===」を使用した場合、型と値が比較される。
型キャストが自動的に行われない。
そのため、結果を早く返すことができる。

条件式の評価の順序を見直す

if などで条件式を使用する際、変更の影響が大きいもの(または頻度が多いもの)を先に記述する。

$var1 && $var2
があるとき、$var1が「false」ならば、$var2の評価を行わない。

設定と一緒に使用する際に、高速化を図れる。

$config === true && SomethingFunc($param)

文字列連結

$str = $str1 . $str2;

$str = "$str1$str2";
では、
前者が高速。後者は、変数展開に字句解析が必要なため、遅くなる。大体10%くらい。

文字列連結 その2

http://www.sound-uz.jp/php/note/firstJoin
連結1
非連結1.12
追記1.52

echo は , か .

元ネタ : http://d.hatena.ne.jp/sotarok/20100321/1269200776

連結回数が多ければ 「.」 が有利。
文字列が長ければ 「,」 が有利。


連結回数が少ない(1回)&文字列が短い(aとb)場合、
実行する度に、大小が逆転して、差が分からない。

call_user_func(_array)は、遅い


PHP 5.3.2-0.dotdeb.2 でのベンチ


動的な呼び出しを行いたいのならば、
変数による呼び出し、

$class = 'class_name';
$method = 'method_name';
$class::$method($arg);

OR

$method = "function_name";
$method($arg);

を行うか、
手動でラップするしかない。
function dispatchMethod($method, $params = array()) {
  switch (count($params)) {
    case 0:
      return $this->{$method}();
    case 1:
      return $this->{$method}($params[0]);
    case 2:
      return $this->{$method}($params[0], $params[1]);
    case 3:
      return $this->{$method}($params[0], $params[1], $params[2]);
    case 4:
      return $this->{$method}($params[0], $params[1], $params[2], $params[3]);
    case 5:
      return $this->{$method}($params[0], $params[1], $params[2], $params[3], $params[4]);
    default:
      return call_user_func_array(array($this, $method), $params);
    break;
  }
}