ruby 實在太慢了.....

學左一陣,頭先做個試驗,比 perl 慢得多, 唔識 python, 冇得試.......下面係screen shot

[email protected]:~$ cat /proc/cpuinfo | grep '^model name' | uniq
model name        : Genuine Intel(R) CPU N270   @ 1.60GHz
[email protected]:~$ uname -a
Linux minix-nb 2.6.28-15-generic #49-Ubuntu SMP Tue Aug 18 18:40:08 UTC 2009 i686 GNU/Linux
[email protected]:~$ time ruby -e 'i=0; while i<=1000000;i=i+1;end'

real        0m1.199s
user        0m1.188s
sys        0m0.000s
[email protected]:~$ time perl -e '$i=0;while ($i<=1000000){$i++}'

real        0m0.373s
user        0m0.364s
sys        0m0.000s
[email protected]:~$ time perl -e '$i=0;while ($i<=10000000){$i++}'

real        0m3.767s
user        0m3.572s
sys        0m0.008s
[email protected]:~$ time ruby -e 'i=0; while i<=10000000;i=i+1;end'

real        0m12.581s
user        0m11.401s
sys        0m0.024s
[email protected]:~$ free -m
             total       used       free     shared    buffers     cached
Mem:          2005        916       1089          0         84        437
-/+ buffers/cache:        394       1611
Swap:         2910          0       2910
[email protected]:~$

Ruby on Rail...
老實講, 我並唔覺得好好用...
情況同Java Grails 一樣, 都係為左整即食面而生既產品

TOP

比 gnu awk 還要慢....
[email protected]:~$ time gawk 'BEGIN{i=0;while (i<=1000000){i++}}'

real        0m0.625s
user        0m0.528s
sys        0m0.012s
[email protected]:~$ time gawk 'BEGIN{i=0;while (i<=10000000){i++}}'

real        0m5.644s
user        0m5.524s
sys        0m0.008s
[email protected]:~$

比 Ubuntu9.04 的 default 的(n|m)awk 還要慢

[email protected]:~$ which awk
/usr/bin/awk
[email protected]:~$ ls -l `which awk`
lrwxrwxrwx 1 root root 21 2009-06-20 17:43 /usr/bin/awk -> /etc/alternatives/awk*
[email protected]:~$ time awk 'BEGIN{i=0;while (i<=1000000){i++}}'

real        0m0.671s
user        0m0.552s
sys        0m0.004s
[email protected]:~$ time awk 'BEGIN{i=0;while (i<=10000000){i++}}'

real        0m6.029s
user        0m5.428s
sys        0m0.012s
[email protected]:~$ which gawk
/usr/bin/gawk
[email protected]:~$

點攪???

[email protected]:~$ gawk --version | head -n2
GNU Awk 3.1.6
Copyright (C) 1989, 1991-2007 Free Software Foundation.
[email protected]:~$ ruby --version | head -n2
ruby 1.8.7 (2008-08-11 patchlevel 72) [i486-linux]
[email protected]:~$ perl --version | head -n2

This is perl, v5.10.0 built for i486-linux-gnu-thread-multi
[email protected]:~$

TOP

python個速度都係慢,
你都可以試下用PHP CLI, 速度好快.

TOP

I've different results, Ruby 1.9 is faster than Perl 5.10:
jaunty:~$ time ruby -e 'i=0; while i<=1000000;i+=1;end'

real        0m0.153s
user        0m0.132s
sys        0m0.020s

jaunty:~$ time perl -e '$i=0;while ($i<=1000000){++$i}'

real        0m0.258s
user        0m0.232s
sys        0m0.008s

jaunty:~$ time ruby -e 'i=0; while i<=10000000;i+=1;end'

real        0m1.170s
user        0m1.136s
sys        0m0.024s

jaunty:~$ time perl -e '$i=0;while ($i<=10000000){++$i}'

real        0m2.371s
user        0m2.288s
sys        0m0.016s

jaunty:~$ uname -a
Linux jaunty 2.6.28-15-generic #49-Ubuntu SMP Tue Aug 18 18:40:08 UTC 2009 i686 GNU/Linux

jaunty:~$ cat /proc/cpuinfo |grep '^model name' |uniq
model name        : Intel(R) Pentium(R) 4 CPU 2.40GHz

jaunty:~$ free -m
             total       used       free     shared    buffers     cached
Mem:          2013       1181        832          0        153        605
-/+ buffers/cache:        422       1591
Swap:          996          0        996

jaunty:~$ ruby -v
ruby 1.9.2p0 (2009-08-20 trunk 24594) [i686-linux]

jaunty:~$ perl -v

This is perl, v5.10.0 built for i486-linux-gnu-thread-multi

TOP

回覆 2# 的帖子

RoR 未用過,但係 ruby 自己都咁慢, 呢舊野唔慌快....
一個只係得十幾年o既語言,居然輸比三十年的 (g|m|n)awk, 優化程度......大型文件分釋唔得掂,
小型文件不如用 awk............

TOP

而家仲有無人同.net/j2ee玩bench mark?

TOP

回覆 5# 的帖子

我冇 1.9, 咁可能呢個 version 優化o左, 唔係真係唔掂,..
呢個係我有興趣想學的語言, 如果咁慢就唔學啦..呵呵, 依家重拾信心,多謝 C hing.

TOP

回覆 8# 的帖子

You are using ubuntu, so you can install Ruby 1.9:

sudo apt-get install ruby1.9

Then you can run Ruby 1.9 by:

ruby1.9

PS: I'm using the latest subversion version.

I learn Ruby because its syntax is simple to remember, it is object-oriented.  Not because it is fast.

For time critical work, I think using C is better.

TOP

D 人用 ruby唔係因為佢快, 好多人用佢係因為配搭左Rails, 開發方面真係快左.
至於運行方面, 慢得黎可以接受, 所以先至有人去用佢.
例如 出一個web page, 用 Perl 要 0.01s, 用 ROR 要 0.1s. 呢d 情況雖然有成 1:10 之差, 但對於 user 黎講分別好少.
d lang 各有各好處, 及各有各支持者.
用邊隻適隨專便.
我自己都有玩 PHP, 又掂過 Perl, Python. 學緊 ROR, 又準備想玩 PHP CodeIgniter 個 MVC 架構.
有興趣可以一齊研究.

TOP