Actions
Feature #10341
closedFiber switch performance improvements
Status:
Closed
Priority:
Normal
Assignee:
-
Target version:
-
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