ホーム > PHP > @演算子のパフォーマンス

@演算子のパフォーマンス

[`evernote` not found]
[`grow` not found]
[`livedoor` not found]
[`yahoo` not found]
Delicious にシェア
このエントリーをはてなブックマークに追加

エラー出力を制御する@演算子のパフォーマンスについて
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() を死ぬほど使おうと思います。

コメント:0

コメントフォーム
入力した情報を記憶する
accessLogging

トラックバック:0

この記事のトラックバック URL
http://beatnik.jp/blog/archives/26/trackback
トラックバックの送信元リスト
@演算子のパフォーマンス - PHPで翻訳三昧 より

ホーム > PHP > @演算子のパフォーマンス

Ad
Apache
MySQL
PHP
お気に入り
ん。。。。。。広告
アーカイブ
Ad

ページの上部に戻る