mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	
		
			
				
	
	
		
			36 lines
		
	
	
	
		
			581 B
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			36 lines
		
	
	
	
		
			581 B
		
	
	
	
		
			YAML
		
	
	
	
	
	
prelude: |
 | 
						|
  def make_link(previous)
 | 
						|
    Fiber.new do
 | 
						|
      while message = previous.resume
 | 
						|
        Fiber.yield(message)
 | 
						|
      end
 | 
						|
    end
 | 
						|
  end
 | 
						|
 | 
						|
  def make_chain(length = 1000, &block)
 | 
						|
    chain = Fiber.new(&block)
 | 
						|
 | 
						|
    (length - 1).times do
 | 
						|
      chain = make_link(chain)
 | 
						|
    end
 | 
						|
 | 
						|
    return chain
 | 
						|
  end
 | 
						|
 | 
						|
  message = "Hello World!"
 | 
						|
 | 
						|
  chain = make_chain do
 | 
						|
    while true
 | 
						|
      Fiber.yield(message)
 | 
						|
    end
 | 
						|
  end
 | 
						|
benchmark:
 | 
						|
  make_chain: |
 | 
						|
    make_chain(100) do
 | 
						|
      while true
 | 
						|
        Fiber.yield(message)
 | 
						|
      end
 | 
						|
    end
 | 
						|
  resume_chain: |
 | 
						|
    chain.resume
 | 
						|
loop_count: 5000
 |