PHP研究
19.Perlより速いなんてウソ?
今回から、PHP4.2以上に焦点を当てて検証していきます。
それ以前のバージョンでも使えるネタも出てくるとは思いますが、
4.2以降で使えるスクリプトを目指すぞっということで。
さて、心機一転第1段は処理スピードです。
PHP関連の情報を探すとます目に付くのが、
「Perlより速いぜ」という自慢げなうたい文句ですが、
果たして本当でしょうか?
そこで、次のようなスクリプトを設置し、スピードを検証してみました。
↓Perl
#!/usr/local/bin/perl
# ループ処理スピードテスト
$b = 1;
($ssec,$smin,$shour,$smday,$smon,$syear,$swday,$syday,$sisdst) = localtime(time);
for ( $a = 1 ; $a <= 2000000 ; $a++ ) {
$b++ ;
}
($esec,$emin,$ehour,$emday,$emon,$eyear,$ewday,$eyday,$eisdst)
= localtime(time);
print "Content-type: text/html\n\n";
print "<html>\n<head>\n";
print "<META HTTP-EQUIV=\"Content-type\" CONTENT=\"text/html;
charset=Shift_JIS\">\n";
print "<title>ループ処理スピードテスト</title>\n";
print "</head><body>\n" ;
print "ループ処理スピードテスト<br><br>\n";
print "開始時間:$shour時$smin分$ssec秒<br>";
print "\$a = $a , \$b = $b<br>";
print "終了時間:$ehour時$emin分$esec秒<br>";
print "</body></html>\n";
exit;
↓PHP
<?php
// ループ処理スピードテスト
$b = 1;
$starttime = date("H時i分s秒");
for ( $a=1; $a<=2000000; $a++ ){
$b++;
}
$endtime = date("H時i分s秒");
print "<html>\n<head>\n";
print "<META HTTP-EQUIV=\"Content-type\" CONTENT=\"text/html;
charset=Shift_JIS\">\n";
print "<title>ループ処理スピードテスト</title>\n";
print "</head><body>\n" ;
print "ループ処理スピードテスト<br><br>\n";
print "開始時間:$starttime" . "<br>";
print "\$a = $a , \$b = $b<br>";
print "終了時間:$endtime" . "<br>";
print "</body></html>\n";
?>
おわかりのとおり、ほとんど同じループ処理を行います。
ループ回数ももっと多くしたかったのですが、
多すぎてエラーになってしまったので、ご了承を。
また、時間の取得が秒までで、かなりアバウト(^_^;
Perlのバージョンは5.6.1、PHPのバージョンは4.2.1です。
Perlファイルをpublic_htmlフォルダ内、
PHPファイルをpublic_htmlフォルダとshared_htmlフォルダ内に設置して、
5回動作させてみました。
このサーバ、XREAでは普通のHTMLファイルを置くpublic_htmlフォルダと、
PHPモジュールが動作するshared_htmlフォルダがあるため、
そういう設置方法になりました。
結果
| Perl (public_htmlフォルダ内) |
PHP (public_htmlフォルダ内) |
PHP (shared_htmlフォルダ内) |
|
| 第1回 |
3秒
|
4秒
|
2秒
|
| 第2回 |
3秒
|
5秒
|
3秒
|
| 第3回 |
3秒
|
4秒
|
3秒
|
| 第4回 |
3秒
|
5秒
|
5秒
|
| 第5回 |
3秒
|
5秒
|
2秒
|
どうですか?