Chinaunix

标题: Perl程序与c程序速度的比较。 [打印本页]

作者: deathcult    时间: 2003-08-11 14:05
标题: Perl程序与c程序速度的比较。
上次powerplane 提到了perl程序速度与c程序速度的问题,
我特意做了如下测试,
结论,速度由快->;慢 为:c程序, perl编译为2进制,perl程序。
c程序是最快的。将perl程序编译以后运行,速度会有提升,但是
还是不太另人满意。

(本结论只限于本类或相关的处理任务,其他方面的速度,没有测试。)


环境:
SunOS usrbj 5.7 Generic_106541-18 sun4u sparc SUNW,Ultra-80
4 X The sparcv9 processor operates at 400 MHz
This is perl, version 5.005_03 built for sun4-solaris


第一个例子:
Squid代理日志里,时间的格式为timestamp,
程序的目的是将其转化为字符串形式,如:
1023389651.867 =>; Fri Jun  7 02:54:11 2002

1300万行的文本,每行都只是一个时间戳。

c程序                --  4m10.852s
perl编译为2进制运行  --  12m22.918s   
perl程序             --  15m25.416s
作者: apile    时间: 2003-08-11 14:13
标题: Perl程序与c程序速度的比较。
謝謝Deathcult的測試..讓我有個參考數字..

perl編譯成binary檔時,為了讓語法簡單,
後面不知道附加了多少沒用到的C代碼,會比c
慢也是無可厚非..
作者: deathcult    时间: 2003-08-11 14:13
标题: Perl程序与c程序速度的比较。
第二个例子:
将ip地址字符串转化为整形,以便于比较其属于哪个网段,
简单的转化为:去掉".",除首位外不够3位的前面补0。
比如:202.108.95.43 =>; 202108095043
然后根据ip表:202108072000 2021080970111 北京
判断为北京。

要处理的文本为1200万行,每行都是一个ip地址。


c程序 -- 2m14.136s
perl编译为2进制运行 -- 5m15.805s
perl程序 -- 6m18.457s
作者: deathcult    时间: 2003-08-11 14:21
标题: Perl程序与c程序速度的比较。
原帖由 "apile" 发表:
謝謝Deathcult的測試..讓我有個參考數字..

perl編譯成binary檔時,為了讓語法簡單,
後面不知道附加了多少沒用到的C代碼,會比c
慢也是無可厚非..
   


是啊,而且perlcc编译后的elf文件会很大。

文件大小:
perl程序   53
perl编译后 692120
c程序 7188

这是例子一,处理时间戳的那个程序,其实是很简单程序:

  1. #!/usr/local/bin/perl -p
  2. s/^\d+\.\d+/localtime $&/e;
复制代码



perlcc处理后产生的c源代码,十分复杂,根本看不明白 :)
作者: yuxq    时间: 2003-08-11 14:37
标题: Perl程序与c程序速度的比较。
very good thanks!
作者: taige    时间: 2003-08-11 15:03
标题: Perl程序与c程序速度的比较。
要说执行效率,还是c啊!
所以我喜欢c
作者: powerplane    时间: 2003-08-11 15:50
标题: Perl程序与c程序速度的比较。
如果用其他c的正则表达式工具,如lex等生成的bin不知道如何呢?
作者: 白水    时间: 2003-08-12 09:49
标题: Perl程序与c程序速度的比较。
2m14.136s
这个是什么意思?2秒?14秒????
作者: lawson    时间: 2003-08-12 18:38
标题: Perl程序与c程序速度的比较。
2分钟又14.136秒
作者: gunguymadman007    时间: 2003-12-01 10:47
标题: Perl程序与c程序速度的比较。
难道这世界上还有比c更快的语言么??
作者: alinker    时间: 2004-12-11 15:54
标题: Perl程序与c程序速度的比较。
汇编呀,如果还不够...机器码
[quote]原帖由 "gunguymadman007"]难道这世界上还有比c更快的语言么??[/quote 发表:

作者: horsley    时间: 2005-07-07 00:14
标题: Perl程序与c程序速度的比较。
[quote]原帖由 "gunguymadman007"]难道这世界上还有比c更快的语言么??[/quote 发表:

有,那就是汇编
作者: hoowa    时间: 2005-07-09 18:09
标题: Perl程序与c程序速度的比较。
有一些核心编码用C来写很合适,因为那样的成本投资值了。

不过此外的东西就会换很多技术来做了。当然也有些老板愿意提高成本完全用C写。

不过,有的时候有的设备里不支持C语言...... m某些主机(mainFrame Computer)设备尤其这样。
作者: hh123456    时间: 2005-07-13 08:51
标题: Perl程序与c程序速度的比较。
如果能再和Python/Ruby/Java比一比就好了。

每种语言都有适合使用的领域,机器速度不是唯一。谁说过,Perl 应该是你的第二语言,其它方法不行时,再用 Perl
作者: superdoctor    时间: 2005-07-14 15:45
标题: Perl程序与c程序速度的比较。
C里面数据结构也更丰富,不知道斑竹测的C程序的是不是最优法,C处理问题有时侯方法不一样效率差很多
作者: sdsdsd    时间: 2005-07-14 20:54
标题: Perl程序与c程序速度的比较。
fortran
作者: bigluo    时间: 2005-07-15 00:25
标题: Perl程序与c程序速度的比较。
在《程序设计实践》中,有好多perl和c作速度比较的例子,差不多也就是这个结果。作为解释执行语言,这个速度不错了。想想java吧,和c的差距差不多有两个数量级呢,用户也不比c的少呀。
作者: laputa73    时间: 2006-07-28 16:14
标题: 我看过类似的比较,处理类似hash的应用,perl快很多呢
因为标准c没有hash结构,所以用来作查找之类的算法会复杂和慢一些。
我的感觉,perl是第一语言,不性了再考虑其他的
作者: nsnake    时间: 2006-08-03 17:31
有这个必要比较吗?
论单一数据比较,C的确是最快的
但问题是你的程序难道只是单纯的匹配比较?
动边不亮西边亮
但还是要感谢楼主告诉我们实际的效果,省去了自己做测试的精力
作者: con    时间: 2006-08-05 01:18
c肯定要比perl快嘛, 但是perl应该是最快的解释语言了

在处理器发展这么快的情况下, 开发的速度比执行的速度更重要吧, 所以我一直选perl




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2