15
mrubyFiber試してみた Rubyist九州、近畿学 崎重

mrubyのfiberを試してみた

Embed Size (px)

Citation preview

  • 1. mrubyFiber Rubyist

2. Fiber Fiber: 3. GC 4. Rubymruby(MacOSX RubyGC.stat mruby 5. GC.stat Ruby GC.stat { :count => 18, #GC :heap_used => 77, # :heap_length => 77, :heap_increment => 0, :heap_live_num => 23287,# :heap_free_num => 8115, :heap_nal_num => 0, } 6. 7. SIZE=256 # aveb=lambda{|b|i=0 # lambda{b[i]=rand(1024) # i=(i+1)%SIZE b.reduce(:+).to_f/SIZE}} #buf=Array.new(SIZE,0)ave=aveb[buf] # 8. SIZE=256avefb=lambda{|b|i=0 Fiber.new{loop{b[i]=rand(1024) i=(i+1)%SIZE Fiber.yield b.reduce(:+).to_f/SIZE}}}buf=Array.new(SIZE,0)avef=avefb[buf] 9. 1e+05C-Ruby 100 4e+046e+04rubyfunc8e+04 020406080100rt0.0150 0.0155 0.0160 0.0165 0.0170Time0204060 Time80100 10. C-Ruby Fiber100 29000 27000f31000 204060801006080100Time0.018 0.019 0.020 0.021 0.022 0.023t002040 Time 11. mruby GC GC.stat 12. mruby 0.125 0.123t10.1270.1290204060 Time80100 13. mruby 0.130 0.128 0.126t0.1320.1340204060 Time80100 14. ----ave.rb--SIZE=256aveb=lambda{|b|i=0 lambda{b[i]=rand(1024) i=(i+1)%SIZE b.reduce(:+).to_f/SIZE}}buf=Array.new(SIZE,0)ave=aveb[buf]test1=lambda{m=[] 100.times{t0=Time.now (1..1000).map{ave[]} m.push (Time.now-t0)}m}puts test1[] mruby 15. ----avefb.rb--SIZE=256avefb=lambda{|b|i=0 Fiber.new{loop{b[i]=rand(1024) i=(i+1)%SIZE Fiber.yield b.reduce(:+).to_f/ SIZE}}}buf=Array.new(SIZE,0)avef=avefb[buf]test2=lambda{m=[] 100.times{t0=Time.now (1..1000).map{avef.resume} m.push (Time.now-t0)}m}puts test2[] mruby Fiber