我有兩個大小爲20Gb的文件。我必須在其中搜索常用字符串。假設字符串的最大長度是20字節。所以爲了解決這個問題,我正在使用以下算法我正在使用一個8GB RAM的系統與四核i3 CPU。在兩個給定的輸入文件中搜索常用字符串
sort the files using any suitable sorting utility
open files A and B for reading
read wordA from A
read wordB from B
while (A not EOF and B not EOF)
{
if (wordA < wordB)
read wordA from A
else if (wordA > wordB)
read wordB from B
else
/* match found, store it into some other files */
write wordA into output
read wordA from A
}
它去成功地爲上述系統配置,但是當我在6GB內存和6個核i3處理器...我的系統得到了關擊落多次120GB的可用磁盤空間的系統上運行該算法。爲什麼發生這種情況?
PLZ告訴我任何其他方式來解決這個plm!我們可以改善它的表現嗎?
僞代碼並沒有告訴我們您的實現 – 2012-01-31 04:07:18
@Duck「段錯誤出來的?記憶?」我不知道它是如何發生的。實際上,當我用8Gb RAM運行這個時,它使用了大約1.2GB的RAM空間和0%的swape空間,所以我認爲它應該也可以與6Gb RAM一起工作。但它沒有工作,爲什麼? – Gopal 2012-01-31 04:26:05
@MitchWheat是肯定它沒有說執行,那麼我可以如何運行上面的算法與其他系統配置是否還有其他更好的邏輯,可以在任何系統中運行? – Gopal 2012-01-31 04:31:48