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秒

どうですか?