6. RubyとMac
OS X 10.2
Ruby 1.6.7
2002
2009年11月8日日曜日
7. RubyとMac
OS X 10.2
Ruby 1.6.7
2005
2002
OS X 10.4
Ruby 1.8.2
2009年11月8日日曜日
8. RubyとMac
OS X 10.5
Ruby 1.8.6
OS X 10.2 RubyCocoa
Ruby 1.6.7 Rails
2005
2002 2007
OS X 10.4
Ruby 1.8.2
2009年11月8日日曜日
9. RubyとMac
OS X 10.5
Ruby 1.8.6
OS X 10.2 RubyCocoa
Ruby 1.6.7 Rails
2005 2009
2002 2007
OS X 10.4 OS X 10.6
Ruby 1.8.2 Ruby 1.8.7
RubyCocoa
Rails
2009年11月8日日曜日
67. GCDのサンプル
素数の数を求める処理をGCDを使って実装する
# 整数numが素数かどうかを判定する
# 戻り値がtrueであれば素数
def prime?(num)
(2...num).each do |i|
return false if num % i == 0
end
return true
end
2009年11月8日日曜日
68. GCDのサンプル
# 10_000_000から10_000_299までの素数の数を求める
prime = []
for i in 0...300
n = i + 10_000_000
prime << n if prime?(n)
end
puts(prime.length)
$ time macruby count-prime.rb
14
macruby count-prime.rb 14.86s user 0.12s system 93% cpu 16.016 total
2009年11月8日日曜日
69. GCDのサンプル
# 10_000_000から10_000_299までの素数の数を求める
prime = []
for i in 0...300
n = i + 10_000_000
prime << n if prime?(n)
end
puts(prime.length) #=> 14
2009年11月8日日曜日
70. GCDのサンプル
# 10_000_000から10_000_299までの素数の数を求める
prime = []
for i in 0...300 ループの並列処理
n = i + 10_000_000
prime << n if prime?(n)
end
puts(prime.length) #=> 14
2009年11月8日日曜日
71. GCDのサンプル
# 10_000_000から10_000_299までの素数の数を求める
prime = []
for i in 0...300 ループの並列処理
n = i + 10_000_000
prime << n if prime?(n) ロック
end
puts(prime.length) #=> 14
2009年11月8日日曜日
72. ループの並列処理
# 10_000_000から10_000_299までの素数の数を求める
q = Dispatch::Queue.concurrent
prime = []
q.apply(300) do |i|
n = i + 10_000_000
prime << n if prime?(n)
end
puts(prime.length) #=> 14
2009年11月8日日曜日
73. ループの並列処理
# 10_000_000から10_000_299までの素数の数を求める
q = Dispatch::Queue.concurrent
並列処理用のオブジェクトの取得
prime = []
q.apply(300) do |i|
n = i + 10_000_000
prime << n if prime?(n)
end
puts(prime.length) #=> 14
2009年11月8日日曜日
74. ループの並列処理
# 10_000_000から10_000_299までの素数の数を求める
q = Dispatch::Queue.concurrent
並列処理用のオブジェクトの取得
prime = []
q.apply(300) do |i|
並列ループ
n = i + 10_000_000
prime << n if prime?(n)
end
puts(prime.length) #=> 14
2009年11月8日日曜日
78. ループの並列処理の詳細
# 10_000_000から10_000_299までの素数の数を求める
q = Dispatch::Queue.concurrent
prime = []
q.apply(300) do
n = i + 10_000_000
prime << n if prime?(n)
end
puts(prime.length) #=> 14
2009年11月8日日曜日
79. ループの並列処理の詳細
# 10_000_000から10_000_299までの素数の数を求める
q = Dispatch::Queue.concurrent
グローバルディスパッチキューの取得
prime = []
q.apply(300) do
n = i + 10_000_000
prime << n if prime?(n)
end
puts(prime.length) #=> 14
2009年11月8日日曜日
80. ループの並列処理の詳細
# 10_000_000から10_000_299までの素数の数を求める
q = Dispatch::Queue.concurrent
グローバルディスパッチキューの取得
prime = []
q.apply(300) do
n = i + 10_000_000
prime << n if prime?(n)
end ブロックをグローバルディスパッチキューに登録
puts(prime.length) #=> 14
2009年11月8日日曜日
81. ロック
# 10_000_000から10_000_299までの素数の数を求める
q = Dispatch::Queue.concurrent
prime = []
q_prime = Dispatch::Queue.new("com.example.prime")
q.apply(300) do
n = i + 10_000_000
q_prime.dispatch { prime << n } if prime?(n)
end
q_prime.dispatch(true) { puts(prime.length) }
2009年11月8日日曜日
82. ロック
# 10_000_000から10_000_299までの素数の数を求める
q = Dispatch::Queue.concurrent
prime = []
q_prime = Dispatch::Queue.new("com.example.prime")
ロック用のオブジェクトの取得
q.apply(300) do
n = i + 10_000_000
q_prime.dispatch { prime << n } if prime?(n)
end
q_prime.dispatch(true) { puts(prime.length) }
2009年11月8日日曜日
83. ロック
# 10_000_000から10_000_299までの素数の数を求める
q = Dispatch::Queue.concurrent
prime = []
q_prime = Dispatch::Queue.new("com.example.prime")
ロック用のオブジェクトの取得
q.apply(300) do
n = i + 10_000_000
q_prime.dispatch { prime << n } if prime?(n) ロック
end
q_prime.dispatch(true) { puts(prime.length) }
2009年11月8日日曜日
84. ロック
# 10_000_000から10_000_299までの素数の数を求める
q = Dispatch::Queue.concurrent
prime = []
q_prime = Dispatch::Queue.new("com.example.prime")
ロック用のオブジェクトの取得
q.apply(300) do
n = i + 10_000_000
q_prime.dispatch { prime << n } if prime?(n) ロック
end
q_prime.dispatch(true) { puts(prime.length) } 処理完了待ち
2009年11月8日日曜日
89. ロックの詳細
# 10_000_000から10_000_299までの素数の数を求める
q = Dispatch::Queue.concurrent
prime = []
q_prime = Dispatch::Queue.new("com.example.prime")
q.apply(300) do
n = i + 10_000_000
q_prime.dispatch { prime << n } if prime?(n)
end
q_prime.dispatch(true) { puts(prime.length) }
2009年11月8日日曜日
90. ロックの詳細
# 10_000_000から10_000_299までの素数の数を求める
q = Dispatch::Queue.concurrent
prime = []
q_prime = Dispatch::Queue.new("com.example.prime")
プライベートディスパッチキューの生成
q.apply(300) do
n = i + 10_000_000
q_prime.dispatch { prime << n } if prime?(n)
end
q_prime.dispatch(true) { puts(prime.length) }
2009年11月8日日曜日
91. ロックの詳細
# 10_000_000から10_000_299までの素数の数を求める
q = Dispatch::Queue.concurrent
prime = []
q_prime = Dispatch::Queue.new("com.example.prime")
プライベートディスパッチキューの生成
q.apply(300) do
n = i + 10_000_000
q_prime.dispatch { prime << n } if prime?(n)
配列への要素追加をキューに登録(非同期)
end
q_prime.dispatch(true) { puts(prime.length) }
2009年11月8日日曜日
92. ロックの詳細
# 10_000_000から10_000_299までの素数の数を求める
q = Dispatch::Queue.concurrent
prime = []
q_prime = Dispatch::Queue.new("com.example.prime")
プライベートディスパッチキューの生成
q.apply(300) do
n = i + 10_000_000
q_prime.dispatch { prime << n } if prime?(n)
配列への要素追加をキューに登録(非同期)
end
q_prime.dispatch(true) { puts(prime.length) }
素数の数の出力をキューに登録(同期)
2009年11月8日日曜日