Bug #10212

MRI is not for lambda calculus

Added by ko1 (Koichi Sasada) almost 6 years ago. Updated over 2 years ago.

Target version:
ruby -v:
ruby 2.2.0dev (2014-08-21 trunk 47241) [x86_64-linux]


# title is joke.

I added benchmark/bm_lc_fizzbuzz.rb which solve fizz buzz program by lambda calculus.

(This program is closly described by "Understanding Computation" by Tom Stuart)
(Japanese translation of this book will be published soon)

The results of this program are:

jruby 1.7.12 (1.9.3p392) 2014-04-15 643e292 on OpenJDK 64-Bit Server VM 1.7.0_65-b32 [linux-amd64]
real    0m26.648s
user    0m30.091s
sys     0m4.369s

mruby 89e9df26819b9555fb790a16662f4ad2b9cbb2e2
real    0m27.145s
user    0m27.110s
sys     0m0.012s

ruby 2.2.0dev (2014-08-21 trunk 47241) [x86_64-linux]
real    1m54.648s
user    1m54.512s
sys     0m0.028s

It is clear that MRI is too slow.

I haven't dig details, but maybe it is because of GC perforamance. Because Proc (and Env) objects are wb-unprotected, such objects are marked on every minor GC.

This problem is not critical because MRI is not for lambda calculus :p but we can improve about it.

Also available in: Atom PDF