• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

CGI,mod_perl,PHP,JSP性能比较

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
作者: 一网深情  


** 请注意! **  
测试结果很大程度上依赖于机器的硬件/软件配置,并随配置变化而产生差异,因此:  
本测试结果 *仅供参考*  

测试用硬件:  
CPU: Intel PII 300(66x4.5)  
RAM: 192M  
HD: IBM 20G(2M cache)  

测试用软件:  
OS: Slackware 7(自行编译的2.2.14核心)  
Web: Apache 1.3.12(标准模块按缺省配置,所有模块静态编译)  
PHP 4.0 RC1(加入了MySQL支持)  
mod_perl 1.23(缺省配置,未加EVERYTHING=1)  
ApacheJServ 1.1(缺省配置)  
JDK: JDK 1.2.2  
JSDK: JSDK 2  
JSP: GNUJSP 1.0.0  
JSP: GNUJSP 1.0.0  

本测试是用Apache自带的Apache Bench(ab)进行的,命令为:  
/www/bin/ab -c 20 -n 1000 CGI/脚本URL  
此命令表示使用 20 个并发连接,进行 1000 次请求。  
所有测试均在本机进行,各种测试均反复进行5次,去掉最大最小值后取平均值。  

我分别测试了C写的CGI、Perl写的CGI、用mod_perl执行的Perl CGI、PHP和JSP。  
各种CGI/脚本均输出内容相似的简单页面,内容如下:  
html  
body  
h1The xxxx Hello Program/h1  
p  
Hello xxxx World!  
/body  
/html  

测试结果(只取了最具代表性的 Requests per second 即每秒处理请求数这一项)  

CGI/脚本类型 每秒处理请求数  
C CGI 128  
Perl CGI 69  
mod_perl 223  
PHP 237  
JSP 21  

除了JSP之外,其它几种CGI/脚本的表现大致是正常的。Perl程序解释执行,作为  
CGI运行时又需要另外fork进程,所以最慢;mod_perl和PHP都直接在httpd内部运  
行脚本,省掉了fork的消耗,所以快了很多;C程序虽然本应最快,但作为CGI 运  
行时也是因为fork而使性能大打折扣。  

至于JSP...我想这个结果并不具有代表性。毕竟测试用机只有192M内存,用top看  
看,一个JAVA就占了11M。况且测试用机本身是一台Web server,测试时还有好几  
十个httpd在跑  

不过不管怎么说,在配置较低的服务器上,跑PHP、mod_perl在性能上要好过JSP  
是肯定的。  

附测试用程序:  


C程序 hello.c  
#include stdio.h  

int main(void)  
{  
char s[] = "C CGI";  
printf ("Content-Type: text/html ");  

printf ("html "  
"body "  
"h1The C CGI Hello Program/h1 "  
"p "  
"Hello %s World! "  
"/body "  
"/html ", s);  
return 0;  
}  

用 gcc -o hello hello.c 编译,把 hello 放到 cgi-bin目录下。  

Perl程序 hello.pl  
#!/usr/bin/perl  
#!/usr/bin/perl  
$s = "Perl CGI";  
print "Content-Type: text/html ";  
print <<DONE  
html  
body  
h1The Perl CGI Hello Program/h1  
p  
Hello $s World!  
/body  
/html  
DONE  

把hello.pl放到cgi-bin目录下,兼作Perl CGI和mod_perl 脚本测试用。  

PHP文件 hello.php  
html  
body  
h1The PHP Hello Program/h1  
<? $s = "PHP"; ?>;  
p  
Hello <? echo $s ?>; World!  
/body  
/body  
/html  

JSP文件 hello.jsp  
html  
body  
h1The JSP Hello Program/h1  
p  
<% String s = "JSP"; %>;  
p  
Hello <%= s %>; World!  
/body  
/html

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
perl-opengl几何变换函数发布时间:2022-07-22
下一篇:
多线程中的变量共享 - Perl6发布时间:2022-07-22
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap