The Ruby Programming Language bookから 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
実装が間違っているか、最初の実装ではリソースの割り当て/初期化/スレッドの終了に時間がかかったのに、2番目の実装にはステートメントしかありませんか?