2009-07-14 10 views
2

空のPHP関数を呼び出す際の「コスト」とは何ですか?主な目的は、セキュリティ、アクセス許可、後処理、タイミング、http(s)などのようなものを処理するために、CMSが寿命のさまざまな時点でモジュールイベントをトリガすることです。何十回も呼び出されるモジュールが十数回もあるので、各ページの読み込みごとに、総コール数は数百に達し、場合によっては数千にも達するでしょう。PHPでの空関数の実行

初期モジュールは、基本的には、解雇と渡されたデータを処理したものは何でもトリガーイベント処理するためにオブジェクトによって置き換えられます次のコードを、次のようになります。

function trigger ($trigger_name, $data=false) 
{ 
    return false; 
} 

これは最終的に問題になるとすべきだろう私は代わりに無意味な関数呼び出しの量を減らすためにトリガを事前登録するモジュールのシステムで動作しますか?

答えて

2

私は、このリンクで見つかった:

http://phplens.com/lens/php-book/optimizing-debugging-php.php

つのパラメータと空の関数本体を持つ関数呼び出しは7-8 $ localvar ++の操作を行うことと同じくらいの時間かかります。同様のメソッド呼び出しは、もちろん約15 $ localvar ++の操作です。

アップデート:2004年7月11日:上記のテストは、約3年前にPHP 4.0.4で行われました。 PHP4.3.3で をもう一度試してみました。関数の呼び出しには約20 $ localvar ++の操作が必要になり、メソッドの呼び出しには約30 $ localvar ++の操作が必要になります。これは、$ localvar ++が今より速く実行されるか、関数が遅くなるためです。

2

PHPが欠けているイベントのサポートのために、this work aroundのようなよりイベント的なものに行きます。これは、事前登録で覚えていたのと似ています。

もしあなたがそれをやりたいと思うことができないのであれば、空の関数呼び出しの束はパフォーマンスを損なうことはありません。私は基本的なプロファイリングをして、どこに時間を費やしてページを提供するのかを見ていきます。空の関数がかなりの時間を要することが示されている場合、私はそれについて心配するでしょう。

ページが非常に複雑で多くのトリガーを必要とするようなケースは想像もできませんが、それ以上の大きなボトルネックはありません。つまり、ページが非常に進んでいる場合、追加されたトリガーはそれほど重要ではなくなります。

関連する問題