忍者ブログ

開発者ブログ

忍者ブログの元開発者が送る愛と感動と涙のスペクタクル。プログラムの開発日誌やタダの日記です。

PHPの最適化 12 PHP Optimization tips の話。

こんばんわ。misneyです。

今日はPHPの話を。

先日、会社の開発者向けMLであった話。
これを使うと遅いから、こっちを使おうよ!って話なんですが、実際どれくらい違うのかなーと思って、調べてみました。

ただ、自分で調べたので結構違うかも。

1.static使えるならstaticを使えば良いじゃんって話
速度が4倍速いらしい。

method 0.040376/ms
static method 0.037899/ms


4倍は言いすぎな気がするけど早い。



2.require_onceよりもrequireを使おうって話

require_onceはコストが高いらしい

require_once 0.246451/ms
require 0.245562/ms


ちょっと早い。


3.requireは絶対パスだと速いよって話

確かにそうだろうなと思う。
(inclue_pathが2種類の場合)

絶対パス 0.185428/ms
相対パス 0.209057/ms (1種類だと0.188036/ms)


もっと沢山のPATHが登録されていると重くなりそう。



4.time()より$_SERVER['REQUEST_TIME'] が良いって話し
確かにそうかも。

time() 0.043423/ms
$_SERVER['REQUEST_TIME'] 0.043805/ms


それほどでもない。



5.preg_matchよりstrpos

preg_match("/a/", $str)と strpos($str, "a")の違い

preg_match 0.129704/ms
strpos 0.050249/ms


これはかなり違う。事足りるなら文字列関数のが良さそう



6.preg_replace >> str_replace > strtr

strtrが一番早いよって話

preg_replace 0.129719/ms
str_replace 0.049164/ms
strtr 0.049107/ms


strtrはもう少し早かったかも。2回目の計測はstr_replaceとほぼ一緒。
preg_は使うなということで。



7.エラー制御演算子(@)のコストが高い

コストが高いらしい。

最初に$a ='';の宣言をつける場合と
$a = @$str;と
$a = (isset($a)) ? $a : '';でチェック。

@ 0.041778/ms
isset 0.044086/ms
宣言 0.036695/ms


最初に宣言できればそれ。$_POST['param']とか必要な物は@のがいいかも。



8.$row[id]より$row['id']のが7倍早い

これは速さ以前にNOTICEエラー。

[id] 0.043816/ms
['id'] 0.036614/ms


そして遅い。



9.for($i=0;$i<count($arr);$i++){}は、前もって$len = count($arr);に

良く聞く話です。

for($i=0;$i<count($arr);$i++){} 0.056426/ms
$l=count($arr);for($i=0;$i<l;$i++){} 0.055037/ms


繰り返し回数5回での差。いっぱいあるほど顕著に現れるかも。
$arrの数が変わるような場合だけ使う。


あと3つあるんですが、再現で悩んでしまったので省略しました。
この結果は環境によって変わりそうですし、私ですし、多分おかしな点があります。
@の方がisset()より早いとは思えない。
そんな訳で参考までに。



カタコト日記さん(http://d.hatena.ne.jp/koto2/20080518/1211070116
というブログで63+ Best practice optimize PHP code performanceという記事を和訳されたページがあり、これがまた面白いです。


とりあえず、正規表現を良く使ってしまうので、文字列関数を使うように心がけたいと思いました。

拍手[1回]

PR

コメント

お名前
タイトル
文字色
メールアドレス
URL
コメント
パスワード Vodafone絵文字 i-mode絵文字 Ezweb絵文字

おまとめボタン

忍者カウンター

忍者ビジター

忍者アド

ブログ内検索

最新コメント

プロフィール

HN:
mizuno
年齢:
43
HP:
性別:
男性
誕生日:
1974/02/13
職業:
主に侍などを少々
趣味:
SEO(「申し訳ございません」や「指ぱっちん」「指定したサイトへは接続できませんでした」でググルと上位に。)
自己紹介:
母子手帳の仮死と書かれてる場所に丸されてます。

フリーエリア

忍者ツールズプロフィール

忍者ツールズプロフィールは終了しました