ホームページ  >  記事  >  バックエンド開発  >  PHP クラスの静的メソッド効率テスト コード_PHP チュートリアル

PHP クラスの静的メソッド効率テスト コード_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-21 15:33:56828ブラウズ

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

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

class test
{
public static function a(){}
public function b(){}
}
$obj = 新しいテスト

次の状況を比較します
$obj->a();
$obj->b();コードをコピーします

コードは次のとおりです:
$obj = new test; $times = 10000; ($test_times-- > 0) { $time1 = microtime(true);
for($i=0; $i{
test::a(); $time2 = マイクロタイム(true);
for ($i=0; $i$obj->a();
$time3 =
for ($i=0; $i{
$obj->b();
$time4 = microtime(true)
$effi1[] = ($time3 - $time2) ) / ($time2 - $time1);
$effi2[] = ($time4 - $time3) / ($time3 - $time2)
}
echo avg($effi1),"n",avg($effi2) );


最後の avg は平均を計算するために定義された関数です:



コードをコピーします

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


function avg($arr)
{
$result = 0; foreach ($arr as $val)
{
$ result += $val;
$result /= count($arr) }

プログラムの出力結果: コード
コードは次のとおりです:


PHP 5.2 14
sourceprint を表示?1 0.76490628848091
2 1.0699484376399
Sourceprint を表示?1 PHP 5.3
Sourceprint を表示?1 0.5691 9482299058
1.1016495598611


繰り返し実行 N (N>10) 回の結果は、これとあまり変わらないことを示しています。
1. クラス名を使用して静的メソッドに直接アクセスする効率は、PHP5.3 を使用する場合でも、静的メソッドにアクセスする効率の 76% です。
2 インスタンスを介した静的メソッドへのアクセスの効率は、バージョン 5.3 では 110% になったと仮定します。
3. PHP を 5.2 から 5.3 にアップグレードしても、パフォーマンスは低下しません。インスタンスを介して関数にアクセスする効率は、少なくとも 35% 向上しました。私は PHP のソース コードを見たことがありません。PHP のソース コードを研究したことのある友人は、この仮定が正しいかどうか教えてくれるのを期待しています (私はそれが正しいはずだと思います)
注: 上記のテストは Windows 7 と php.exe に基づいています。 5.2.14 は apache2 を使用します。php.exe と Web アクセスを通じて実行される PHP コアが同じであることを考慮すると、5.3 ではサーバー構成を変更するのが面倒で、結果は次のようになります。同じ。
http://www.bkjia.com/PHPjc/322524.html
www.bkjia.com

tru​​e

http://www.bkjia.com/PHPjc/322524.html

技術記事

クラスの定義は次のとおりです。 次のようにコードをコピーします。 class test { public static function a(){} public function b(){} } $obj = new test 次の状況を比較します。 ; $obj-a(); $ob...




声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。