rubyスレッド運転速度テスト
詳細
まず、ruby threadとnative threadの差を見たいと宣言し、rubyをけなすつもりはない.
テストの結果はびっくりして、あまり速くありません.native threadと比べると、本当に遅いです.
コードは簡単で、ruby threadを10個起動するたびに100000回の累積をします.10回連続運転し、運転平均値を求める.
私のワークマシン、PC 2.8 G、シングルコア.1 Gメモリ、windows XP.テスト時も特に運転環境をクリーンアップしていませんが、
最後の平均結果3.0937
そして同じコードをC++で1部書いたが、実行時間はテストできず、時間差はほぼ0だった.ほぼプログラムが起動したばかりで、実行は終了しました.Rubyコードとは違って、しばらくはまともに動いていました.
HOHO.
まず、ruby threadとnative threadの差を見たいと宣言し、rubyをけなすつもりはない.
テストの結果はびっくりして、あまり速くありません.native threadと比べると、本当に遅いです.
コードは簡単で、ruby threadを10個起動するたびに100000回の累積をします.10回連続運転し、運転平均値を求める.
私のワークマシン、PC 2.8 G、シングルコア.1 Gメモリ、windows XP.テスト時も特に運転環境をクリーンアップしていませんが、
最後の平均結果3.0937
time = 0
10.times do |k|
now = Time.now
puts now.to_s
count = 0
threads = []
10.times do |i|
threads[i] = Thread.new do
#sleep(rand(0.1))
100000.times do |j|
count += j
end
Thread.current["mycount"] = count
end
end
threads.each {|t| t.join; print t["mycount"], ", " }
puts "count = #{count}"
later = Time.now
time += later-now
puts later-now
end
puts time/10
そして同じコードをC++で1部書いたが、実行時間はテストできず、時間差はほぼ0だった.ほぼプログラムが起動したばかりで、実行は終了しました.Rubyコードとは違って、しばらくはまともに動いていました.
HOHO.