From: SASADA Koichi Date: 2012-11-20T07:36:44+09:00 Subject: [ruby-dev:46547] ベンチマークが終わらない shugo さんの refinement の修正についてベンチマークを取ろうと,昨日からす べてのベンチマークを走らせたところ,普段なら数時間で終わるのですが,今見 たら終わってませんでした. > so_nsieve_bits > > #!/usr/bin/ruby > # > # The Great Computer Language Shootout > # http://shootout.alioth.debian.org/ > # > # nsieve-bits in Ruby > # Contributed by Glenn Parker, March 2005 > > CharExponent = 3 > BitsPerChar = 1 << CharExponent > LowMask = BitsPerChar - 1 > > def sieve(m) > items = "\xFF" * ((m / BitsPerChar) + 1) > masks = "" > BitsPerChar.times do |b| > masks << (1 << b).chr > end > > count = 0 > pmax = m - 1 > 2.step(pmax, 1) do |p| > if items[p >> CharExponent][p & LowMask] == 1 > count += 1 > p.step(pmax, p) do |mult| > a = mult >> CharExponent > b = mult & LowMask > items[a] -= masks[b] if items[a][b] != 0 > end > end > end > count > end > > n = 9 # (ARGV[0] || 2).to_i > n.step(n - 2, -1) do |exponent| > break if exponent < 0 > m = 2 ** exponent * 10_000 > count = sieve(m) > printf "Primes up to %8d %8d\n", m, count > end > > > clean 30256.3521170616 => 504.272535 分 このベンチマークがえらい時間かかっているようなのですが,何かお心当たりの ある人は居ませんか? ちょっと異常です. 以前は 5 秒弱で終わっていました. この clean というのは ruby 2.0.0dev (2012-11-19 trunk 37722) [x86_64-linux] です. nari さんの定点ベンチマークでは,なんか出てます? -- // SASADA Koichi at atdot dot net