Sha256: b70a276d36d0b892d1f40b5a2e7bbcb3b8d8bf4f1dd2ae3546073cb495abed62
Contents?: true
Size: 785 Bytes
Versions: 5
Compression:
Stored size: 785 Bytes
Contents
# frozen_string_literal: true require 'fiber' class Fiber attr_accessor :next end # This program shows how the performance of Fiber.transfer degrades as the fiber # count increases def run(num_fibers) count = 0 GC.disable first = nil last = nil supervisor = Fiber.current num_fibers.times do fiber = Fiber.new do loop do count += 1 if count == 1_000_000 supervisor.transfer else Fiber.current.next.transfer end end end first ||= fiber last.next = fiber if last last = fiber end last.next = first t0 = Time.now first.transfer elapsed = Time.now - t0 puts "fibers: #{num_fibers} count: #{count} rate: #{count / elapsed}" GC.start end run(100) run(1000) run(10000)
Version data entries
5 entries across 5 versions & 1 rubygems