PHP 5 には新しいオブジェクト モデル、より多くの新機能が含まれており、処理速度、特にオブジェクト指向コードの処理速度が向上しています。PHP 4 のオブジェクト指向コードの速度は比較的平均的ですが、PHP5.x では。オブジェクト指向コードの速度はプロシージャ指向コードの速度を超えているため、オブジェクト指向コードのパフォーマンスを疑う必要はありません。次のテスト結果がこれをすべて示しています。
【テスト環境】
- CPU: インテル Pentium4 2.66GHz
- メモリ: 1GB
- ディスク: 73GB/SCSI
- OS: FreeBSD 4.11
- Web: Apache 1.3.37
テストツール: ab (http_load も使用可能)
名詞 RPS: Requests per Second (1 秒あたりのリクエスト数)
テストツール: ab (http_loadも使用可能)
名詞RPS: Requests per Second (1秒あたりのリクエスト数)
【PHP 4.4.2 テスト結果】 】
【機能】
function signed(){
echo "test";
}
signin();
?>
echo "test";
}
signin();
?>
テスト結果: ab -n 10000 -c 50 の結果は1047.23/rps
[クラス Class]
クラスをインスタンス化しません
class User{
function signed(){
echo "test";
}
}
User::signin();
?>
function signed(){
echo "test";
}
}
User::signin();
?>
テスト結果: ab -n 10000 -c 50 の結果は1034.98/rps
インスタントクラス
class User{
function signed(){
echo "test";
}
}
$user=new User();
$user->signin();
?>
function signed(){
echo "test";
}
}
$user=new User();
$user->signin();
?>
テスト結果: ab -n 10000 -c 50 の結果は1006.14/rps
クラス継承
class AUser{
Function signed(){}
}
claāss User extends Auser{
function signed(){
echo "test";
}
}
$user=new User();
$user->signin();
?>
Function signed(){}
}
claāss User extends Auser{
function signed(){
echo "test";
}
}
$user=new User();
$user->signin();
?>
テスト結果:ab -n 10000 -c 50の結果は992.95/rps
【PHP 5.2.1テスト結果】
【関数】
function signed(){
echo "test";
}
signin();
?>
echo "test";
}
signin();
?>
テスト結果: ab -n 10000 -c 50 の結果は1176.06/rps
[クラス Class]
クラスをインスタンス化しません
? & Lt;? Php
パブリック関数サインイン () {
エコー "テスト" } } ユーザー :: サインイン
;
テスト結果: ab -n 10000 -c 50 の結果は
1197.17/rps
インスタントクラスエコー "テスト" } } ユーザー :: サインイン
;
テスト結果: ab -n 10000 -c 50 の結果は
1197.17/rps
class User{
public function signed(){ echo "test";
}}
$user=new User();
$user->signin();
?>
テスト結果: ab -n 10000 -c 50 の結果は1187.93/rps
クラスの継承と抽象化
テスト結果: ab -n 10000 -c 50 の結果は1128.54/rps
【テスト結果と分析】
【テスト結果データ】
【結果分析】
1. 一般的に言えば、PHP5.2のパフォーマンスがPHP4.4のパフォーマンスよりもわずかに高いことが明らかにわかりますので、疑う必要はありませんPHP5.2のパフォーマンス パフォーマンスは悪くなります、明らかにPHP4より速いです
2.PHP4.4のクラスの解析パフォーマンスは関数のそれよりも明らかに遅く、特に継承が使用されている場合、低下はさらに悪化します, そのため、PHP4.4では、プロセス指向で非継承のクラス操作を使用する方が適しています
3. PHP5.2では、関数の実行速度よりもクラスの実行速度が速いという結果になります。 PHP5.2エンジンはオブジェクト指向の処理に多くの時間を費やしており、同時に関数にしてもクラスにしてもパフォーマンスが良いことがわかります
4.を通して。このテストでは、コードをほとんど変更せずに PHP4 を PHP5 にアップグレードする十分な理由があります。また、PHP5 は、一部の特殊なコードを除いて、基本的に下位互換性のある PHP4 コードです。なお、上記の通り、PHP グループは今年末以降 PHP4 の保守を継続しなくなる予定ですので、早めにアップグレードしてご安心ください。
$user->signin();
?>
テスト結果: ab -n 10000 -c 50 の結果は1187.93/rps
クラスの継承と抽象化
抽象クラスAUser{
抽象関数signin();
}
class User extends Auser{
パブリック関数signin(){
echo "test";
}
}
$user=new User() ;
$user->signin();
?>
抽象関数signin();
}
class User extends Auser{
パブリック関数signin(){
echo "test";
}
}
$user=new User() ;
$user->signin();
?>
テスト結果: ab -n 10000 -c 50 の結果は1128.54/rps
【テスト結果と分析】
【テスト結果データ】
バージョン | 機能テスト | クラスをインスタンス化しないでください | インスタンス化されたクラス | クラスの継承 |
PHP 4.4.2 | 1047.23/rps | 1034.98/rps | 1006.14/rps | 992.95/rps |
PHP 5.2.1 | 1176.06/rps | 1197.17/rps | 1187.93/rps | 1128.54/rps |
【結果分析】
1. 一般的に言えば、PHP5.2のパフォーマンスがPHP4.4のパフォーマンスよりもわずかに高いことが明らかにわかりますので、疑う必要はありませんPHP5.2のパフォーマンス パフォーマンスは悪くなります、明らかにPHP4より速いです
2.PHP4.4のクラスの解析パフォーマンスは関数のそれよりも明らかに遅く、特に継承が使用されている場合、低下はさらに悪化します, そのため、PHP4.4では、プロセス指向で非継承のクラス操作を使用する方が適しています
3. PHP5.2では、関数の実行速度よりもクラスの実行速度が速いという結果になります。 PHP5.2エンジンはオブジェクト指向の処理に多くの時間を費やしており、同時に関数にしてもクラスにしてもパフォーマンスが良いことがわかります
4.を通して。このテストでは、コードをほとんど変更せずに PHP4 を PHP5 にアップグレードする十分な理由があります。また、PHP5 は、一部の特殊なコードを除いて、基本的に下位互換性のある PHP4 コードです。なお、上記の通り、PHP グループは今年末以降 PHP4 の保守を継続しなくなる予定ですので、早めにアップグレードしてご安心ください。