Re: [問題] 迴圈效能
※ 引述《legnaleurc (CA)》之銘言:
: 是以Sieve of Eratosthenes去產生一個長度20000000的質數表
: 以上是我目前試出最快的實作
: 但是也要40秒才跑得完
: 有趣的是如果內部迴圈用step方法反而會更慢
這邊的狀況是,用越多單純的作法通常會越快
因為 ruby 裡有些東西是用 ruby 寫的,類似 lib 的意思
而有些最基本的東西,是用 c 寫的,所以一定會比較快
: 然而Python用相同的方法確可以達到18秒( C++和Java就別提了 )
python 是一定比 ruby 快啦... XD
: Ruby是否能再優化呢
把下面的程式碼:
: 考慮以下代碼:
: 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
^^^^^^^^^^^^
這個,cache 起來,不要一直 call, 可以快不少
: if prime[j]
: prime[j] = false
: end
: j += i
: end
: end
: end
還不夠快的話,我想就可以考慮其他的方法了,例如 RubyInline
或是調校一下 ruby interpreter, 換成 ruby 1.9, 諸如此類的
--
『風車』が廻り続ける度に 『美しき』幻想が静かに紡がれ
『焔』の揺らめきの外に 『腕』を伸ばす愚かな者達 -《Roman》5th Story
『宝石』をより多く掴もうと 『朝と夜』の狭間を彷徨い続ける Track 10
『星屑』の砂の煌めきにも 『葡萄酒』の仄甘い陶酔を魅せ 黄昏の賢者
『賢者』が忌避する檻の中から 『伝言』の真意を彼等に問うだろう
『天使』が别れを告げし時 『地平線』は第五の物語を識る
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.135.28.18
推
02/26 12:35, , 1F
02/26 12:35, 1F
→
02/26 12:36, , 2F
02/26 12:36, 2F
→
03/02 11:52, , 3F
03/02 11:52, 3F
討論串 (同標題文章)
Ruby 近期熱門文章
PTT數位生活區 即時熱門文章