- 2008-05-11 日 03:18:16
- PHP
エラー出力を制御する@演算子のパフォーマンスについて
MyRSS.jpさんとこのブログで興味深い実測をされてました。
「@」でエラー抑制すると PHP が遅くなるという噂について
@を使った場合、何も使わなかった場合、isset()を使った場合の
3つについてパフォーマンスを比較されています。
ふと、予め「初期化した値」だと違ってくるのか?
と思ったのでこれにのっかってみました。
ifが正と評価されると次の文が実行されるので
MyRSSさんのコードと違って ifの後は空の文にしました。
PHP4、error_reporting(0) の状態で、
for文100万回の繰り返しを、5回やったうちの平均的な実行時間です
/** * 初期化なし */ if (@$a["hoge"]) ; // 2.65秒 if ($a["hoge"]) ; // 1.54秒 if (isset($a["hoge"])) ; // 0.69秒
/** * 初期化あり */ $a["hoge"] = 1; if (@$a["hoge"]) ; // 1.91秒 if ($a["hoge"]) ; // 0.86秒 if (isset($a["hoge"])) ; // 0.97秒
エラーのある無しに関わらず @演算子は負担になってます。
エラーを表示をさせない為だけに@演算子を使うもんじゃないって事ですな。
まあ、エラーが無ければ isset()無しも健闘してますが
セキュリティホールになりかねないので
私も isset() を死ぬほど使おうと思います。
- 新しい: いらんアクセス対策考
- 古い: クローラじゃないMSNホストの怪
コメント:0
トラックバック:0
- この記事のトラックバック URL
- http://beatnik.jp/blog/archives/26/trackback
- トラックバックの送信元リスト
- @演算子のパフォーマンス - PHPで翻訳三昧 より