CNET Venture view

「@」でエラー抑制すると PHP が遅くなるという噂について

代表取締役
赤松洋介
2008年05月09日 15時55分

トラックバック

トラックバック一覧を見る(0)

ブックマーク

印刷用ページ

この記事を印刷する

PHP では @ を付けることでエラーを回避できるという便利な記述方法があり、ものぐさな私などは

if (@$var["foo"]) $result = $var["foo"];

みたいなコードを書いてしまいます。

で、この処理が「遅い」というやツッコミを度々受けるので調べてみました。

「ほら、そんな気にするほどでも無いよ」という結果を期待していたのですが、、、なんじゃこりゃ。。。
劇遅じゃないですか、これ

いやはや・・・

ちょっと列挙しますね。以下のようなコードを単純 for 文で 100万回実行したときの結果です。


error_reporting(0) で PHP4

if (@$a["hoge"]) $b = $a["hoge"];
 ⇒ 約 2.4 秒
if ($a["hoge"]) $b = $a["hoge"];
 ⇒ 約 1.3 秒
if (isset($a["hoge"])) $b = $a["hoge"];
 ⇒ 約 0.57 秒

※いずれの場合も、$a = array("a" => "b") であり、if 文は必ず false になります


error_reporting(0xffff) で PHP4

if (@$a["hoge"]) $b = $a["hoge"];
 ⇒ 約 2.4 秒
if (isset($a["hoge"])) $b = $a["hoge"];
 ⇒ 約 0.57 秒


error_reporting(0) で PHP5

if (@$a["hoge"]) $b = $a["hoge"];
 ⇒ 約 4.8 秒
if ($a["hoge"]) $b = $a["hoge"];
 ⇒ 約 4.2 秒
if (isset($a["hoge"])) $b = $a["hoge"];
 ⇒ 約 0.90 秒


error_reporting(0xffff) で PHP5

if (@$a["hoge"]) $b = $a["hoge"];
 ⇒約 9.6 秒
if (isset($a["hoge"])) $b = $a["hoge"];
 ⇒ 約 0.92 秒


※PHP5 のマシンは Dual Core Xeon と高スペックだったので 1000万回の実行時間です。

・・・遅い・・・遅すぎる・・・ここまでパフォーマンス悪くなるとは・・・

細かい処理とはいえ、最大10倍違うわけですから・・・


すいません、完全なる私の敗北です。これからはちゃんと isset() とか死ぬほど使います (_o_)


トラックバック

この記事に対するトラックバックはまだありません

この記事に対するTrackBackのURL:

プロフィール

サイボウズ在籍中に、通常のHTMLで構築されたウェブサイトのRSS化を実現するサービス「MyRSS.jp」を始めた赤松洋介氏。最初は、サイトの更新情報を自ら確認するのが面倒だという理由で、自分のために趣味で立ち上げたサービスだった。このサービスを一般公開したのが2004年1月で、その後赤松氏は2005年7月末にサイボウズを退社、8月1日にはMyRSS.jpをはじめとするRSS関連のサービスを提供する企業としてサイドフィードを設立した。

バックナンバー

記事・企業検索

 

 すべて  企業情報のみ