jRubyが並列に動くのか確かめたいです。 CPUバウンドな時間が掛かる処理があるといいはず。 計算に時間が掛かる処理と言えばπの計算です。 BigMath::PIより早く円周率を計算する - Qiitaを参考にして、Rubyでπを計算してみます。
require "bigdecimal" require "benchmark" result = Benchmark.realtime do prec = 100 conv = 6 a = BigDecimal("1") b = BigDecimal("1") / BigDecimal("2").sqrt(prec) t = BigDecimal("1") / 4 p = BigDecimal("1") for n in 1..conv do an = (a + b) / 2 b = (a * b).sqrt(prec) t -= p * (an - a) * (an - a) p *= 2 a = an end puts (a + b) * (a + b) / (4 * t) end puts "Time: #{result}s"
動かしてみます。
ledsun@MSI:~/ruby-pi►ruby pi.rb
Time: 0.19301386800361797s
参考記事より一桁おそいです・・・。 僕の実行環境は 11th Gen Intel(R) Core(TM) i7-1185G7 @ 3.00GHz なので、2015年の実行環境より遅い確率は低いはずです。 参考にその他の情報も残しておきます。