ホームページ > php教程 > php手册 > PHP クラスの静的メソッド効率テスト コード

PHP クラスの静的メソッド効率テスト コード

WBOY
リリース: 2016-06-13 12:13:21
オリジナル
1418 人が閲覧しました

クラスの定義は次のとおりです。

コードをコピー コードは次のとおりです。


class test
{
public static function a (){}
public function b(){}
}
$obj = new test;


次の状況を比較します
test::a() ;
$obj->a();
$obj->b();

コピーコード コードは次のとおりです:

$obj = 新しいテスト;
$times = 10000; array();
$effi2 = array();

while ($test_times--> 0)
{
$time1 = microtime(true); $i=0; $i{
test::a();
$time2 =
for($i) =0; $i{
$obj->a();
$time3 =
for($i) =0; $i{
$obj->b();
$time4 = マイクロタイム(true); = ($time3 - $time2) / ($time2 - $time1);
$effi2[] = ($time4 - $time3) / ($time3 - $time2);
エコー平均($effi1),"n", avg($effi2);


最後の avg は平均を計算するカスタム関数です:



コードをコピー

コードは次のとおりです。


function avg($arr)
{

$result = 0; foreach ($arr as $val) { $result = $val; }

$result /= count($arr)

return $result;


プログラムの出力結果:



コードをコピー

コードは次のとおりです:

PHP 5.2.14
view sourceprint?1 0.76490628848091
2 1.0699484376399

ソースプリントを表示?1 PHP 5.3 ソースプリントを表示?1 0.56919482299058
1.1016495598611
繰り返し実行 N (N>10)結果はあまり多くありませんこれとは異なります。説明:

1. 直接クラス名を介して静的メソッドにアクセスする効率は、インスタンスを介して静的メソッドにアクセスする場合の 76% ですが、PHP5.3 を使用する場合でも、わずか 56% です。

2.インスタンスを介して静的メソッドにアクセスする効率は、非静的メンバー メソッドにアクセスする効率の 106% ですが、バージョン 5.3 では 110% になります
3. PHP を 5.2 から 5.2 にアップグレードしても、クラス名を介して静的メソッドにアクセスする効率は低下しないと仮定します。 5.3 では、インスタンスを介して関数にアクセスする効率が少なくとも 35% 向上しました。私は PHP のソース コードを見たことがありません。PHP のソース コードを研究したことのある友人は、この仮定が正しいかどうか教えてほしいと思っています (私はそれが正しいはずだと思います)
注: 上記のテストは Windows 7 と PHP に基づいています。 exe、5.2.14を使用します。 apache2.2のテスト結果に違いはありません。php.exeとWebアクセスを通じて実行されるPHPコアが同じであることを考慮すると、5.3ではサーバー構成を変更するのが面倒すぎます。同じはずです。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート