ホームページ >バックエンド開発 >PHPチュートリアル >PHP の静的メソッドと非静的メソッドの効率の比較
今日この記事 http://jingyan.baidu.com/article/6b97984d7892d21ca2b0bfc2.html を読んでいたら、最初の文がこれだったことがわかりました
クラスメソッドを静的として定義できる場合は、次のように定義してみてください静的であれば、速度はほぼ 4 倍に向上します。
コード実行の効率をテストするための唯一の基準は実践であるため、仕事から帰ってから少しの時間を利用して、小さなテストを実行しました:
まず、コードをテストします (問題があれば修正してください)何か間違っています):
テスト環境:
/test # php -vPHP 5.4.24 (cli) (built: Jan 19 2014 21:32:15) Copyright (c) 1997-2013 The PHP GroupZend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies
/test # uname -aDarwin 192.168.0.101 13.1.0 Darwin Kernel Version 13.1.0: Thu Jan 16 19:40:37 PST 2014; root:xnu-2422.90.20~2/RELEASE_X86_64 x86_64
<?phpclass staticTest { public function test() { $i = 0; $i++; } public static function testStatic() { $i = 0; $i++; } }$start = microtime(true);for($i=0;$i<10000000;$i++) { $test = new staticTest(); $test->test();}echo (microtime(true) - $start) ."\n";$start = microtime(true);for($i=0;$i<10000000;$i++) { staticTest::testStatic();}echo microtime(true) - $start;
/test # php staticTest.php
2.2938342094421
1.1871800422668
2回目の実行結果:
2.303295135498
1.1807670593262
実行後多くの場合、近くの 2.3 と 1.18 にあります。記事で言及されている効率の向上はそれほどひどいものではありませんが、パフォーマンスの向上は確かに約 2 倍になっていることがわかります。したがって、引き続きお勧めします:
クラスメソッドを静的として定義できる場合は、それを静的として定義してみてください。その速度はほぼ 2 倍になります。
通常の PHP フレームワークには、まだ多くのクラスとメソッドが含まれていますが、静的メソッドにできる場合は、静的メソッドを使用する方が効率的です。