git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65851 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
samuel 2018-11-20 10:16:34 +00:00
Родитель 3710dedc12
Коммит 20f1c6c185
1 изменённых файлов: 8 добавлений и 18 удалений

Просмотреть файл

@ -1,6 +1,4 @@
#!/usr/bin/env ruby # Check performance of fiber creation and transfer.
require 'benchmark'
def make_link(previous) def make_link(previous)
Fiber.new do Fiber.new do
@ -23,25 +21,17 @@ end
def run_benchmark(length, repeats, message = :hello) def run_benchmark(length, repeats, message = :hello)
chain = nil chain = nil
time = Benchmark.realtime do
chain = make_chain(length) do chain = make_chain(length) do
while true while true
Fiber.yield(message) Fiber.yield(message)
end end
end end
end
puts "Creating #{fibers} fibers took #{time}..."
time = Benchmark.realtime do
repeats.times do repeats.times do
abort "invalid result" unless chain.resume == message abort "invalid result" unless chain.resume == message
end end
end end
puts "Passing #{repeats} messages took #{time}..."
end
n = (ARGV[0] || 1000).to_i n = (ARGV[0] || 1000).to_i
m = (ARGV[1] || 1000).to_i m = (ARGV[1] || 1000).to_i