Actions
Feature #10341
closedFiber switch performance improvements
Status:
Closed
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
Like0
Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0