[MacRuby-devel] macruby experimental benchmark

रजनीश rdogra at earthlink.net
Sat Mar 28 16:45:56 PDT 2009


Hello,

banchmark is already impressive when compared to 0.4.

I ran the benchmark with:
1. clang -03 -arch i386 macruby 0.4
2. clang -O3 -arch i386 macruby 0.5
3. gcc-4.2 -O3 -arch i386 macruby 0.5

(clang is the C/ObjC compiler native to LLVM)

PS. clang currently doesn’t pass rake spec:ci (

============== clang -03 -arch i386 macruby 0.4  
============================
~/Developer/MacRuby-> ./miniruby -I./lib ../macruby-experimental/ 
bench.rb
                                     user     system      total         
real
10 fib(30)                      2.610000   0.010000   2.620000  
(  2.623886)
10 fib(35)                     28.720000   0.060000  28.780000  
( 28.809891)
tak                             2.530000   0.000000   2.530000  
(  2.524596)
tarai                           2.060000   0.010000   2.070000  
(  2.066017)
ackermann                       2.410000   0.000000   2.410000  
(  2.410433)
10000000 times loop             0.330000   0.000000   0.330000  
(  0.322564)
30000000 times loop             3.240000   0.000000   3.240000  
(  3.243957)
10000000 while loop             0.890000   0.000000   0.890000  
(  0.891436)
60000000 while loop             5.500000   0.020000   5.520000  
(  5.521020)
30000000 msg w/ 0 arg           3.940000   0.010000   3.950000  
(  3.947202)
30000000 msg w/ 1 arg           4.010000   0.010000   4.020000  
(  4.026623)
10000000 super w/ 0 arg         7.420000   0.020000   7.440000  
(  7.437519)
10000000 super w/ 1 arg         9.540000   0.020000   9.560000  
(  9.592043)
10000000 #send                  5.280000   0.020000   5.300000  
(  5.309358)
10000000 ivar read              2.040000   0.000000   2.040000  
(  2.053376)
30000000 ivar read              6.100000   0.020000   6.120000  
(  6.119993)
10000000 ivar write             2.150000   0.010000   2.160000  
(  2.152597)
30000000 ivar write             6.440000   0.010000   6.450000  
(  6.449781)
30000000 const                  1.800000   0.010000   1.810000  
(  1.803391)
30000000 yield                  3.520000   0.010000   3.530000  
(  3.519516)
30000000 msg w/ block+yield     6.400000   0.010000   6.410000  
(  6.418424)
30000000 Proc#call              8.640000   0.030000   8.670000  
(  8.692045)
30000000 while break            2.510000   0.000000   2.510000  
(  2.530938)
10000000 block break           13.810000   0.550000  14.360000  
(  8.429742)
30000000 while next             2.290000   0.000000   2.290000  
(  2.295239)
10000000 block next             2.690000   0.010000   2.700000  
(  2.702703)
60000000 begin w/o exception    4.980000   0.010000   4.990000  
(  5.014342)
60000000 ensure w/o exception   3.640000   0.010000   3.650000  
(  3.647675)
50000 raise                     2.580000   0.170000   2.750000  
(  2.077362)

=========== clang -O3 -arch i386 macruby 0.5  
=====================================
./miniruby -I./lib bench.rb
                                     user     system      total         
real
10 fib(30)                      0.350000   0.000000   0.350000  
(  0.353159)
10 fib(35)                      3.890000   0.000000   3.890000  
(  3.905832)
tak                             0.220000   0.010000   0.230000  
(  0.224368)
tarai                           0.170000   0.000000   0.170000  
(  0.162998)
ackermann                       0.210000   0.000000   0.210000  
(  0.211560)
10000000 times loop             0.140000   0.000000   0.140000  
(  0.138711)
30000000 times loop             1.380000   0.000000   1.380000  
(  1.386931)
10000000 while loop             0.080000   0.000000   0.080000  
(  0.082421)
60000000 while loop             0.500000   0.000000   0.500000  
(  0.493618)
30000000 msg w/ 0 arg           1.050000   0.000000   1.050000  
(  1.052416)
30000000 msg w/ 1 arg           1.650000   0.010000   1.660000  
(  1.646295)
10000000 super w/ 0 arg         1.000000   0.000000   1.000000  
(  1.003267)
10000000 super w/ 1 arg         1.350000   0.000000   1.350000  
(  1.357992)
10000000 #send                  0.450000   0.000000   0.450000  
(  0.447047)
10000000 ivar read              0.150000   0.000000   0.150000  
(  0.151039)
30000000 ivar read              0.450000   0.000000   0.450000  
(  0.452225)
10000000 ivar write             0.180000   0.000000   0.180000  
(  0.178246)
30000000 ivar write             0.530000   0.000000   0.530000  
(  0.534289)
30000000 const                  0.500000   0.000000   0.500000  
(  0.510684)
30000000 yield                  1.190000   0.010000   1.200000  
(  1.194234)
30000000 msg w/ block+yield     3.420000   0.000000   3.420000  
(  3.425893)
30000000 Proc#call              2.340000   0.010000   2.350000  
(  2.346405)
30000000 while break            0.190000   0.000000   0.190000  
(  0.191913)
10000000 block break            1.660000   0.000000   1.660000  
(  1.670270)
30000000 while next             0.240000   0.000000   0.240000  
(  0.246752)
10000000 block next             1.630000   0.000000   1.630000  
(  1.640193)
60000000 begin w/o exception    0.490000   0.000000   0.490000  
(  0.493330)
60000000 ensure w/o exception   0.350000   0.010000   0.360000  
(  0.342626)
50000 raise                     3.370000   0.120000   3.490000  
(  1.796350)


=========== gcc-4.2 -O3 -arch i386 macruby 0.5  
=====================================
~/Developer/macruby-experimental-> ./miniruby -I./lib bench.rb
                                     user     system      total         
real
10 fib(30)                      0.350000   0.000000   0.350000  
(  0.352703)
10 fib(35)                      3.890000   0.010000   3.900000  
(  3.924630)
tak                             0.230000   0.000000   0.230000  
(  0.224254)
tarai                           0.160000   0.000000   0.160000  
(  0.164155)
ackermann                       0.210000   0.000000   0.210000  
(  0.212784)
10000000 times loop             0.150000   0.010000   0.160000  
(  0.153406)
30000000 times loop             1.520000   0.000000   1.520000  
(  1.529161)
10000000 while loop             0.080000   0.000000   0.080000  
(  0.083568)
60000000 while loop             0.490000   0.000000   0.490000  
(  0.497827)
30000000 msg w/ 0 arg           1.150000   0.010000   1.160000  
(  1.163730)
30000000 msg w/ 1 arg           1.650000   0.000000   1.650000  
(  1.658609)
10000000 super w/ 0 arg         0.990000   0.000000   0.990000  
(  0.995326)
10000000 super w/ 1 arg         1.380000   0.000000   1.380000  
(  1.388644)
10000000 #send                  0.440000   0.000000   0.440000  
(  0.449934)
10000000 ivar read              0.150000   0.000000   0.150000  
(  0.152117)
30000000 ivar read              0.450000   0.000000   0.450000  
(  0.454063)
10000000 ivar write             0.180000   0.000000   0.180000  
(  0.179490)
30000000 ivar write             0.540000   0.000000   0.540000  
(  0.536518)
30000000 const                  0.510000   0.000000   0.510000  
(  0.511782)
30000000 yield                  1.280000   0.010000   1.290000  
(  1.281898)
30000000 msg w/ block+yield     3.450000   0.000000   3.450000  
(  3.468621)
30000000 Proc#call              2.220000   0.010000   2.230000  
(  2.236161)
30000000 while break            0.190000   0.000000   0.190000  
(  0.192734)
10000000 block break            1.750000   0.000000   1.750000  
(  1.762103)
30000000 while next             0.240000   0.000000   0.240000  
(  0.246971)
10000000 block next             1.770000   0.010000   1.780000  
(  1.771981)
60000000 begin w/o exception    0.500000   0.000000   0.500000  
(  0.494001)
60000000 ensure w/o exception   0.340000   0.000000   0.340000  
(  0.344364)
50000 raise                     2.850000   0.110000   2.960000  
(  1.525959)



More information about the MacRuby-devel mailing list