[問題] 迴圈效能
考慮以下代碼:
prime = Array.new( 20000000, true )
prime[0, 1] = false, false
for i in 2..( prime.length ** 0.5 ).floor
if prime[i]
j = i << 1
while j < prime.length
if prime[j]
prime[j] = false
end
j += i
end
end
end
是以Sieve of Eratosthenes去產生一個長度20000000的質數表
以上是我目前試出最快的實作
但是也要40秒才跑得完
有趣的是如果內部迴圈用step方法反而會更慢
然而Python用相同的方法確可以達到18秒( C++和Java就別提了 )
Ruby是否能再優化呢
--
自High筆記(半荒廢)
http://legnaleurc.blogspot.com/
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.123.224.125
討論串 (同標題文章)
Ruby 近期熱門文章
PTT數位生活區 即時熱門文章