1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
|
require File.expand_path(File.join(File.dirname(__FILE__), '../lib/curb'))
require 'async'
puts "Testing fiber scheduler with real URLs..."
# Test without fiber scheduler
puts "\n1. Without fiber scheduler:"
start = Time.now
multi = Curl::Multi.new
easies = []
3.times do |i|
easy = Curl::Easy.new("https://httpbin.org/delay/1")
easy.on_complete { |curl| puts "Request #{i} completed: #{curl.response_code}" }
multi.add(easy)
easies << easy
end
multi.perform
elapsed = Time.now - start
puts "Total time: #{elapsed.round(2)}s"
# Test with fiber scheduler
puts "\n2. With fiber scheduler:"
if Async.respond_to?(:run)
Async.run do
puts "Fiber scheduler available: #{Curl::Multi.fiber_scheduler_available?}"
start = Time.now
multi = Curl::Multi.new
easies = []
3.times do |i|
easy = Curl::Easy.new("https://httpbin.org/delay/1")
easy.on_complete { |curl| puts "Request #{i} completed: #{curl.response_code}" }
multi.add(easy)
easies << easy
end
multi.perform
elapsed = Time.now - start
puts "Total time: #{elapsed.round(2)}s"
end
else
Async do
puts "Fiber scheduler available: #{Curl::Multi.fiber_scheduler_available?}"
start = Time.now
multi = Curl::Multi.new
easies = []
3.times do |i|
easy = Curl::Easy.new("https://httpbin.org/delay/1")
easy.on_complete { |curl| puts "Request #{i} completed: #{curl.response_code}" }
multi.add(easy)
easies << easy
end
multi.perform
elapsed = Time.now - start
puts "Total time: #{elapsed.round(2)}s"
end
end
puts "\nDone!"
|