有数据有真相,Perl还是很快的~~~
时间:2010-11-17
来源:互联网
首先用ruby产生一个充满随机数的文件,共500万行,每行7列。
复制代码
执行完后获得500w.txt文件,耗时1分16秒:
该文件大小和长度:
然后编写一个stat.rb脚本,和一个stat.pl脚本,统计第6列的唯一出现次数。
ruby脚本如下:
复制代码
perl脚本如下:
复制代码
执行ruby脚本:
执行perl脚本:
ruby的版本:
perl的版本:
CPU:Xeon CPU 2.8G,多少核不用管了,反正用不着。
内存:物理内存2G,执行过程中未用到交换内存。
总结:ruby比perl慢了1/3。这取决于几方面:
(1)I/O的效率。
(2)Hash的效率。
(3)正则表达式的效率。
结合邮件列表上曾经的相关讨论可认为,是Perl的正则表达式执行效率完全胜出!
- x = Random.new
- f = File.open("500w.txt","w")
-
- 5000000.times do |c|
- str = ''
- 7.times do |d|
- str << x.rand(10000..99999).to_s + " "
- end
- f.puts str
- end
执行完后获得500w.txt文件,耗时1分16秒:
QUOTE:
$ time ruby random.rb
real 1m16.227s
user 1m14.022s
sys 0m1.391s
real 1m16.227s
user 1m14.022s
sys 0m1.391s
该文件大小和长度:
QUOTE:
$ wc -l 500w.txt
5000000 500w.txt
$ du -h 500w.txt
206M 500w.txt
5000000 500w.txt
$ du -h 500w.txt
206M 500w.txt
然后编写一个stat.rb脚本,和一个stat.pl脚本,统计第6列的唯一出现次数。
ruby脚本如下:
- hash = Hash.new(0)
-
- File.open("500w.txt").each do |c|
- hash[$2] +=1 if c =~ /^(\S+\s+){5}(\S+)/
- end
-
- puts hash.keys.size
perl脚本如下:
- use strict;
-
- my %hash;
- open my $fd,"500w.txt" or die $!;
- while(<$fd>) {
- $hash{$2} ++ if /^(\S+\s+){5}(\S+)/;
- }
- close $fd;
-
- print scalar keys %hash;
执行ruby脚本:
QUOTE:
$ time ruby stat.rb
90000
real 0m29.532s
user 0m29.343s
sys 0m0.163s
90000
real 0m29.532s
user 0m29.343s
sys 0m0.163s
执行perl脚本:
QUOTE:
$ time perl stat.pl
90000
real 0m19.755s
user 0m19.518s
sys 0m0.229s
90000
real 0m19.755s
user 0m19.518s
sys 0m0.229s
ruby的版本:
QUOTE:
$ ruby -v
ruby 1.9.2p0
ruby 1.9.2p0
perl的版本:
QUOTE:
$ perl -v
This is perl, v5.8.8 built for i686-linux
This is perl, v5.8.8 built for i686-linux
CPU:Xeon CPU 2.8G,多少核不用管了,反正用不着。
内存:物理内存2G,执行过程中未用到交换内存。
总结:ruby比perl慢了1/3。这取决于几方面:
(1)I/O的效率。
(2)Hash的效率。
(3)正则表达式的效率。
结合邮件列表上曾经的相关讨论可认为,是Perl的正则表达式执行效率完全胜出!
作者: 兰花仙子 发布时间: 2010-11-17
仙子有空测试下 5.12 ?5.10的内部实现的改动不知道对性能有什么影响啊
作者: zhlong8 发布时间: 2010-11-17
QUOTE:
仙子有空测试下 5.12 ?5.10的内部实现的改动不知道对性能有什么影响啊
zhlong8 发表于 2010-11-17 18:46
zhlong8 发表于 2010-11-17 18:46
hoho~~你自己也可以测试下嘛~~
装一个ruby 1.9,不要1.8,慢的要死。
作者: 兰花仙子 发布时间: 2010-11-17
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28