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