Project

General

Profile

Actions

Feature #10341

closed

Fiber switch performance improvements

Feature #10341: Fiber switch performance improvements

Added by nome (Knut Franke) about 11 years ago. Updated over 8 years ago.

Status:
Closed
Assignee:
-
Target version:
-
[ruby-core:65518]

Description

The attached patches increase performance of switches between Fibers by ~17% on my test system (Linux, gcc 4.8.2).

Patches 1-3 are purely cosmetic, but included here because submitting them separately would cause conflicts between the patch sets. If these are rejected, I can prepare stand-alone versions of 4/5.

Patch 4 yields the most significant performance increase (~12%). The benefit of patch 5 is lower, and it's a larger change; so this one could optionally be omitted.

require 'benchmark' fib = Fiber.new do	loop { Fiber.yield } end Benchmark.bm do |bm|	3.times do	results << bm.report { 10_000_000.times { fib.resume } }	end	avg = results.inject(:+) / results.size [avg] end 

Raw benchmarking results:

trunk@47827 - 7.59s patch 4 - 6.59s (87% of trunk) patch 4+5 - 6.33s (83% of trunk) 

Files

Actions

Also available in: PDF Atom