大切なのは数秒のスピードアップ?それとも?
うん、うわさは本当だと思う。
「@」でエラー抑制すると PHP が遅くなるという噂について(a++ My RSS 管理人ブログ 2008/5)
でもね、よく考えよう。100万回ループさせたら9秒の差が出ました、って、、、 100万回とか1000万回ループするfor文なんてものを書くのは実際の開発現場においてよくあることなんだろうか?(いやもちろん、実験だからそういう数値を使ってることは承知のうえで)
Webシステムの画面として稼動するスクリプトにおいてそんなものすごいループをしなければならない状況になったことは少なくとも筆者はない。もしそうなったとすればそれはその前段階で何かがおかしいと思ったほうがいいんじゃなかろうか。
じゃあやっぱり百万オーダーのレベルでループしなければならない処理なんてありえないよね、というとそうでもない。典型的なのは、バッチ処理だ。全ユーザー/全データ/全ファイル/全商品の情報にアクセスしてなにか定型処理をするとか、そういうの。
でもね、そんな大量処理がたとえば10秒以内といった短い時間で終わることなんてハナから期待してない/期待されてないケースがほとんどだ。それに、大量の処理においてボトルネックになるのは、エラー出力の抑制処理なんかじゃなく、DB上でのSQLによる検索、更新処理とか、もっと単純にファイル読み書きのディスクI/Oスピードとか、そういうのだろう。
そんな状況にあって、「隊長!@マークによるエラー出力抑制を全部書き直したら30分の処理が29分50秒になりました!」なんて言われても、よくやったほめてやる!なんてことにはなりにくい。
PHPにおいて@によるエラー抑制はほどほどに、という論は、処理スピード云々の話ではなくエラー処理はどうあるべきか?の話だ。 javaでtry{}catch{}構文使ってるけどcatch{}の中身が空っぽだったりするソースコードを見かけたとき「せめてそこでエラーログを吐くくらい書かないとあとあとバグ退治しづらいぜ」という話になるのと似たような感じ。
ブログに書いてある箇条書きが額面どおりとは限らない。 日本人が日本語で書いてるブログだろうと 外人が英語で書いたブログだろうとそれは同じ。
本当に大切なことを見失わないことが肝要だ。

コメントする
(初めてのコメントの時は、コメントが表示されるためにこのブログのオーナーの承認が必要になることがあります。承認されるまでコメントは表示されませんのでしばらくお待ちください)