3
我學習論壇中的紅寶石,從Ruby編程語言書&發現被描述爲每個迭代器的併發版本的方法,爲什麼在這種情況下併發循環比正常循環慢?
module Enumerable
def concurrently
map {|item| Thread.new { yield item }}.each {|t| t.join }
end
end
下面的代碼
start=Time.now
arr.concurrently{ |n| puts n} # Ran using threads
puts "Time Taken #{Time.now-start}"
輸出: Time Taken 6.6278332
雖然
個start=Time.now
arr.each{ |n| puts n} # Normal each loop
puts "Time Taken #{Time.now-start}"
輸出:Time Taken 0.132975928
爲什麼沒有線程更快?這個實現是錯誤的還是第二個語句只有puts
聲明,而最初的聲明需要時間進行資源分配/初始化/終止線程?
這很有道理,謝謝澄清:) – 2013-04-11 15:16:54