From: eregontp@... Date: 2018-05-02T21:24:04+00:00 Subject: [ruby-core:86846] [Ruby trunk Bug#10212] MRI is not for lambda calculus Issue #10212 has been updated by Eregon (Benoit Daloze). mvasin (Mikhail Vasin) wrote: > Ruby is manifested as a multi-paradigm language, but recursion and lambdas are way too slow to actually use it in a functional style... BTW, running this with Ruby's trunk --jit gives 3.2s at me vs 10s without --jit (and fwiw 0.6s on GraalVM). So it's getting faster, don't conclude too eagerly. Also the functional style of Ruby is hardly about recursion but much more about the nice Enumerable API and blocks. ---------------------------------------- Bug #10212: MRI is not for lambda calculus https://bugs.ruby-lang.org/issues/10212#change-71811 * Author: ko1 (Koichi Sasada) * Status: Closed * Priority: Normal * Assignee: ko1 (Koichi Sasada) * Target version: * ruby -v: ruby 2.2.0dev (2014-08-21 trunk 47241) [x86_64-linux] * Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN ---------------------------------------- # title is joke. I added benchmark/bm_lc_fizzbuzz.rb which solve fizz buzz program by lambda calculus. http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=47447 (This program is closly described by ["Understanding Computation"] (http://computationbook.com/) by Tom Stuart) ([Japanese translation of this book] (http://www.oreilly.co.jp/books/9784873116976/) 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. -- https://bugs.ruby-lang.org/ Unsubscribe: