- 论坛徽章:
- 0
|
[转贴]CGI, mod_perl, PHP, JSP性能比较
无意中发现这个帖子,我也测试了一下,和上面的结果完全不同
理论归理论,还是多实测,不同的代码不同的环境可能有不同的测试结果。
我的测试结果完全相反(在windows环境)perl普通状态(没有mod_perl)下不但不慢,还比PHP要快
测试完成相同加法运算,循环1000000次(如果您的机器配置比较底,可以减少循环次数)
雷鸟2000+ 256兆内存,考虑到加上编译时间,做了两个脚本:
######perl.cgi#########
#!/usr/bin/perl
use Benchmark;
$TT0 = new Benchmark;
do "test.cgi";#用DO命令调用test.cgi脚本来计算总时间
exit;
#######test.cgi########
print "Content-type: text/html\n\n";
$abc=1000;
for ($i=1;$i<1000000;$i++){
$abc=$abc+100;
}
print "运算结果$abc";
$TT1 = new Benchmark;
$td = Benchmark::timediff($TT1, $TT0);
$td = Benchmark::timestr($td);
$td =~ /(\d+)\s*wallclock secs \(\s*?(\d*?\.\d*?)\s*usr\s*\+\s*(\d*?\.\d*?)\s*sys/i;
my $alltimas=($2+$3)*1000;
print "<center>;CPU 时间:$2 usr + $3 sys 合计运行时间 $alltimas 毫秒";
###########然后运行perl.cgi,
php没有类似do命令,要得到编译时间需要到dos窗口:
######此脚本插入到下面的test.php两个脚本中间##############
<?php
$sum = 100;
for($i=0;$i<1000000;$i++){
$sum += 100;
}
echo $sum;
?>;
######gettime.php########
<?php
list($usec, $sec) = explode(" ",microtime());
echo sprintf("%.8f", ((float)$usec + (float)$sec));
?>;
#########output.php###############
<?php
$fp1 = fopen("first.txt", "r");
$fp2 = fopen("last.txt", "r");
$time1 = trim(fgets($fp1));
$time2 = trim(fgets($fp2));
fclose($fp1);
fclose($fp2);
echo "\n\nTotal time: ";
echo sprintf("%.8f", $time2 - $time1);
echo " second(s)";
?>;
##########test.php#############
########dos窗口执行下面批处理b.bat######
echo Notice: [testfilename] should be with extension
echo if [testfilename] does not existing,
echo the default file do.php is used
echo !!! REMEMBER: change the PHP_BIN system variable
echo to your own directory !!!
echo ------------------------------------------------
pause
set PHP_BIN=c:\php\php.exe
set TESTFILE=%1
if "%TESTFILE%" == "" goto error
if EXIST %TESTFILE% goto ok
goto error
:ok
echo Benchmark: %TESTFILE% ...
goto normal
:default
set TESTFILE=do.php
goto ok
:normal
%PHP_BIN% -f gettime.php >; first.txt
%PHP_BIN% %TESTFILE%
%PHP_BIN% -f gettime.php >; last.txt
%PHP_BIN% -f output.php
goto end
:error
echo No such a file: %TESTFILE%
echo Using default...
goto default
:end
set TESTFILE=
set PHP_BIN=
@echo on
################完################
运算结果:
perl:
运算结果100000900
CPU 时间:0.60 usr + 0.00 sys 合计运行时间 600 毫秒
php:
0.7801044秒(780毫秒)
也可以不用上面那么麻烦,两个都直接在IE下测试,都忽略脚本的编译时间,肉眼观察windows进程管理器图示曲线就很明显, perl站用的cpu也是要少一些。和上面的测试结果相同
#######直接IE窗口运行test.cgi########
#!/usr/bin/perl
print "Content-type: text/html\n\n";
$abc=1000;
for ($i=1;$i<1000000;$i++){
$abc=$abc+100;
}
print "运算结果$abc";
#########直接IE窗口运行test.php##############
<?php
$sum = 100;
for($i=0;$i<1000000;$i++){
$sum += 100;
}
echo $sum;
?>; |
|