मैं दो लिपियों जो मशीनीकरण का उपयोग एक गूगल सूचकांक पृष्ठ लाने में की है। मैंने माना कि EventMachine रूबी धागे से तेज होगा, लेकिन ऐसा नहीं है।इवेंटमैचिन का रूबी रूबी थ्रेड से धीमा क्यों है?
EventMachine कोड लागत: "0.24s user 0.08s system 2% cpu 12.682 total"
रूबी थ्रेड कोड लागत: "0.22s user 0.08s system 5% cpu 5.167 total "
मैं गलत तरीके से EventMachine का उपयोग कर रहा हूं?
EventMachine:
require 'rubygems'
require 'mechanize'
require 'eventmachine'
trap("INT") {EM.stop}
EM.run do
num = 0
operation = proc {
agent = Mechanize.new
sleep 1
agent.get("http://google.com").body.to_s.size
}
callback = proc { |result|
sleep 1
puts result
num+=1
EM.stop if num == 9
}
10.times do
EventMachine.defer operation, callback
end
end
रूबी थ्रेड:
require 'rubygems'
require 'mechanize'
threads = []
10.times do
threads << Thread.new do
agent = Mechanize.new
sleep 1
puts agent.get("http://google.com").body.to_s.size
sleep 1
end
end
threads.each do |aThread|
aThread.join
end
रूबी का कौन सा संस्करण और कार्यान्वयन आप चल रहे हैं? जीआईएल (ग्लोबल दुभाषिया ताला) के साथ कार्यान्वयन के लिए, हरे धागे वास्तव में पूरी तरह से एक साथ नहीं चल सकते हैं। आप अपने देखे गए व्यवहार की पुष्टि करने के लिए jRuby या Rubinius में उदाहरण चलाने का प्रयास करना चाहेंगे –