<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress/2.3.3" -->
<rss version="0.92">
<channel>
	<title>MT312 &#187; 処理速度最適化法</title>
	<link>http://www.mt312.com</link>
	<description></description>
	<lastBuildDate>Mon, 12 May 2008 02:56:06 +0000</lastBuildDate>
	<docs>http://backend.userland.com/rss092</docs>
	<language>ja</language>
	
	<item>
		<title>処理速度最適化法</title>
		<description>いろいろ纏めようと思っていたんですが、すでに分かりやすいサイトが沢山あります。

PHP最適化tipsまとめサイト
基礎構文処理速度のあれこれ
require VS require_once
実際に計測してみた所、試行回数が少なかったせいか、あまり差は見られませんでした。
（未読ファイルの読み込みに関して）
一度しか読まないのが分かっていればrequire_onceを使うメリットはないと思います。
速度は気にせず以下で使い分ければOK。

複数回読まれる可能性があるが、一度しか読む必要がない。require_once
それ以外。require
== VS ===
型を含めて比較する後者の方が若干速い。
パスワードなど外部データと比較する場合にセキュリティーホールとなる可能性があるので、理由がない限り===を常用する。
is_hoge() VS ===
[php]
if(is_null($var)) {}
if($var===null) {}
[/php]
後者が速い。
count($array)>0 VS (bool)$array
配列に要素があるかどうかの判別。
後者が速い。
array_merge() VS +演算子
array_mergeは連結後に数字キーを振り直すので、連想配列の場合は+演算子を使った方が速い。
[php]
$a = array('a'=>1, 'b'=>2);
$b = array('a'=>3, 'c'=>4);

// array_merge($a, $b) == $b + $a;
[/php]
バージョン分岐
PHPのメジャーバージョンで分岐したい場合はversion_compare()を使うより各バージョン特有の定数を調べるのが良い。
[php]
// PHP_VERSIONの一文字目を調べるより速い
$isPHP5 = defined('E_STRICT');
[/php]
is_file() VS file_exists()
file_exists()はディレクトリも含まれるので、ファイルの有無を調べたいだけならis_file()の方が高速。
文字列連結速度
[php]
$str = $str1.$str2;
$str = "$str1$str2";
$str = "{$str1}{$str2}";
[/php]
上から順に高速。 
splitは使うな
文字列を分割して配列を作成する場合、splitは遅いので避ける。 
正規表現分割は、 preg_split (PHP 3.0.9, 4, 5)
固定文字分割は、 explode (PHP 3, 4, 5)
分割して一部分だけ取得したい場合は、分割数を制限する3番目のlimit引数を付けておきます。 特にループ内で繰り返し使う場合、全分割するより時間を短縮できます。 
[php]
$str ...</description>
		<link>http://www.mt312.com/php/41/</link>
			</item>
</channel>
</rss>
