From: samuel@... Date: 2018-06-02T01:07:23+00:00 Subject: [ruby-core:87351] [Ruby trunk Feature#14739] Improve fiber yield/resume performance Issue #14739 has been updated by ioquatix (Samuel Williams). I fixed autoconf issues and built on Linux. The performance improvement was even more impressive. ``` koyoko% ruby --version ruby 2.6.0dev (2018-06-01 native-fiber 63544) [x86_64-linux] last_commit=Better support for amd64 platforms koyoko% ruby ./fiber_benchmark.rb setup time for 1000 fibers: 0.007222 execution time for 10000 messages: 3.433891 setup time for 1000 fibers: 0.015365 execution time for 10000 messages: 3.177730 setup time for 1000 fibers: 0.010035 execution time for 10000 messages: 3.205329 setup time for 1000 fibers: 0.012063 execution time for 10000 messages: 2.968101 setup time for 1000 fibers: 0.010448 execution time for 10000 messages: 2.947756 koyoko% rvm use 2.6 Using /home/samuel/.rvm/gems/ruby-2.6.0-preview2 koyoko% ruby --version ruby 2.6.0preview2 (2018-05-31 trunk 63539) [x86_64-linux] koyoko% ruby ./fiber_benchmark.rb setup time for 1000 fibers: 0.006881 execution time for 10000 messages: 13.242779 setup time for 1000 fibers: 0.009869 execution time for 10000 messages: 13.468187 setup time for 1000 fibers: 0.013938 execution time for 10000 messages: 12.691139 setup time for 1000 fibers: 0.014423 execution time for 10000 messages: 12.005481 setup time for 1000 fibers: 0.013953 execution time for 10000 messages: 12.535145 ``` @nobu do you mind confirming? ---------------------------------------- Feature #14739: Improve fiber yield/resume performance https://bugs.ruby-lang.org/issues/14739#change-72343 * Author: ioquatix (Samuel Williams) * Status: Open * Priority: Normal * Assignee: * Target version: ---------------------------------------- I am interested to improve Fiber yield/resume performance. I've used this library before: http://software.schmorp.de/pkg/libcoro.html and handled millions of HTTP requests using it. I'd suggest to use that library. As this is used in many places in Ruby (e.g. enumerable) it could be a big performance win across the board. Here is a nice summary of what was done for RethinkDB: https://rethinkdb.com/blog/making-coroutines-fast/ Does Ruby currently reuse stacks? This is also a big performance win if it's not being done already. -- https://bugs.ruby-lang.org/ Unsubscribe: