免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 7727 | 回复: 18
打印 上一主题 下一主题

亲测perl-cgi、php、 asp速度 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-06-18 23:14 |只看该作者 |倒序浏览
ziluobu我近期打算做个网站系统,在选型的时候不知道应该定位哪种程序开发所以亲自进行了测试。
首先排除了jsp因为太占内存,加上个人开发所以排除,剩下在perl-cgi php asp中测试。

我分别对三种编程语言进行10000000次循环,并且每次循环进行一次累加操作,虽然我的测试具有一定的片面性,没有考虑到程序运行时其它复杂的环境,如数据库操作等,但是从一定的角度还是能够反映出来各个编程语言的性能。

首先我使用了iis+asp   iis+perl5+perlex30  iis+php5
我机器配置为奔腾2.4a+512内存
perl我用的是perlex方式配置,据perl官方介绍这种方式类似fastcgi一次加入内存可以多次调用,所以大家以后开发perl-cgi在iis平台上可以用这样这个,我测试perlex的确比传统的perl-cgi快很多倍。
官方介绍如下:
PerlEx is an ISAPI plugin for the IIS web server which increases the performance of CGI programs written in Perl. Much as mod_perl works with Apache, PerlEx works with IIS to precompile scripts and add extended functionality such as embedding capabilities and persistent data connections.
好了不说perl了详细如下:

代码分别如下:
ASP
=====================
<%
s=time()
i=1
for i = 1 to 10000000
        a=a+i
next
       
p=time()-s

Response.write p

%>


=======================
PERL
=======================
$s=time();
for ($i=1;$i<=10000000;$i++){
        $a=$a+$i;
        }
$p=time()-$s;

print 'Content-type:text/html';
print "\n\n";
print $p;
=======================
PHP
=======================
<?php
$s=time();
for ($i=1;$i<=10000000;$i++){
        $a=$a+$i;
        }
$p=time()-$s;
print $p;

?>
-======================

经过多次测试运行结果如下

程序      时间  秒s
php          3s
perl          8s
asp          13s

显然PHP用了不可思议的时间完成了10000000循环并且累加,让我不敢相信自己的眼睛,经过N次测试发现结果依然保持在3s左右。
我考虑或许perl配置在了iis上会影响到perl的执行效率,所以在windows的cmd窗口里直接执行test.pl语句观看执行速度,发现依然在8s,对test.pl 进行了perlcc -B test.pl 进行二进制编译后执行依然保持在8秒左右。
asp就不说了13秒,本身就没有考虑用ASP开发程序,只是用来参考。

最后我决定使用php作为我的web开发语言。

我做这个评测让大家看并不是说perl不好,perl有很多优点,我最喜欢的就是它对文本的超强分析能力,并且我还写了它的很多应用程序,大家可以在chinaunix里找我写的《perl轻松做简单网络爬虫》和《perl轻松作顶贴宝宝》。
到此测试结束,希望我的测试结果可以对大家有所帮助。对此感兴趣的朋友可以用我的测试脚本在自己机器上测试一下你们的测试速度:)

论坛徽章:
0
2 [报告]
发表于 2007-06-19 02:50 |只看该作者
只是经过这么一个小的测试你就决定使用 php 了吗?

for ($i=1;$i<=10000000;$i++) 是 C 程序员常用的格式。在 Perl 的世界里,使用的是 foreach (1..1000000)。foreach 是直接在数据上操作,而不是先复制在操作。

在我的一台 P350 的机器上,同样的程序在命令行下,使用 foreach (1..10000000) 需要时间 16 秒。如果是 for($i=1;$i<=10000000;$i++) 需要时间 29 秒。php 用了 67 秒。

不管怎样,运行速度一般不是选择语言的因素,因为他们之间都差不太多(php,python, perl)。关键是看是否熟悉这个语言,是否易维护来决定的。

论坛徽章:
0
3 [报告]
发表于 2007-06-19 09:06 |只看该作者
for ($i=1;$i<=10000000;$i++) 是 C 程序员常用的格式。在 Perl 的世界里,使用的是 foreach (1..1000000)。foreach 是直接在数据上操作,而不是先复制在操作。


学习了,的确只用了原来一半的时间

论坛徽章:
0
4 [报告]
发表于 2007-06-19 09:12 |只看该作者
我看了一下楼主的帖子,都是发在perl版。可见也是一个perl爱好者。支持楼主多发贴!

招聘 : Java研发
论坛徽章:
0
5 [报告]
发表于 2007-06-19 15:21 |只看该作者
It's may unfair just by showing this simple test.
why not mod_perl?

论坛徽章:
0
6 [报告]
发表于 2007-06-19 17:43 |只看该作者
原帖由 Qiang 于 2007-6-19 02:50 发表
只是经过这么一个小的测试你就决定使用 php 了吗?

for ($i=1;$i<=10000000;$i++) 是 C 程序员常用的格式。在 Perl 的世界里,使用的是 foreach (1..1000000)。foreach 是直接在数据上操作,而不是先复制在 ...

所言极是!

论坛徽章:
0
7 [报告]
发表于 2007-06-19 23:14 |只看该作者
原帖由 pangj 于 2007-6-19 15:21 发表
It's may unfair just by showing this simple test.
why not mod_perl?

Agree.
easyworld 该用户已被删除
8 [报告]
发表于 2007-06-20 14:29 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
9 [报告]
发表于 2007-06-20 20:53 |只看该作者
for ($i=1;$i<=10000000;$i++){
        $a=$a+$i;
        }
看清楚我还有一个$a=$a+$i
你们那样写能这样累加吗?

论坛徽章:
0
10 [报告]
发表于 2007-06-20 21:00 |只看该作者
我开头也向大家解释了,这样的测试具有片面性,我写出来只是供perl爱好者参考,大家一起沟通研究,所以大家发表不同意见就OK了,请轻点砸鸡蛋哦。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP