Project

General

Profile

Bug #17995

Updated by hsbt (Hiroshi SHIBATA) almost 3 years ago

 
 When using --jit and Ractor at same time, benchmark would be slow down with recursion function such like Tarai function an Fibonacci function. 
 The slow down is confirmed under both gcc(linux) and mingw64(windows MSYS2). 



 Test environment: 
 Cpu:Ryzen9 5900HS@3.3Ghz 8core/16thread  
 Memory:32GB@3200Mhz 
 OS:Ubuntu 21.04/Windows 10 

 Because of this cpu has 8 physic core,the parallel thread number is set to 8   

 Slow down is also confirmed with using only ractor    (without sequence running). 

 When runing 'par' before 'seq' and using --mjit,'seq' is more slower than runing 'seq' berfore 'par' 


 Tarai function 


 ```ruby 
 

 def tarai(x, y, z) = 
   x <= y ? y : tarai(tarai(x-1, y, z), 
                      tarai(y-1, z, x), 
                      tarai(z-1, x, y)) 
 require 'benchmark' 
 Benchmark.bm do |x| 
   # sequential version 
   x.report('seq'){ 8.times{ tarai(14, 7, 0) } } 

   # parallel version 
   x.report('par'){ 
     8.times.map do 
       Ractor.new { tarai(14, 7, 0) } 
     end.each(&:take) 
   } 
 end 
 ``` 

 


 Fibonacci function  

 ```ruby 
 def fib(n) 
   if n==1 then return 1 end 
   if n==2 then return 1 end 
   fib(n-1)+fib(n-2) 
 end 

 require 'benchmark' 
 Benchmark.bm do |x| 
    # sequential version 
   x.report('fib:seq'){ 8.times{ fib(40) } } 

   # parallel version 
   x.report('fib:par '){ 
     8.times.map do 
       Ractor.new {fib(40) } 
     end.each(&:take) 
   } 
 end 
 ``` 



Back