精華區beta Programming 關於我們 聯絡資訊
※ 引述《blueeye.bbs@bbs.wretch.cc (blueeye)》之銘言: : 我個人認為每秒一筆是正常的...我認為原因是記憶體不足..swap過多.. 每秒一筆才叫做不正常 我每個月處裡的資料, 一次都百萬多筆, 頂多會因為 I/O 頻繁, 導致 1.5 秒才處裡千筆 不過, 我認為問題出在他的程式碼最後面 show 出 clock 的部份 因為他是 start - end 及忘了 clock() 是以毫秒為單位 : 我很久以前也曾經試著把"字典檔",大概約有10萬筆吧 : 用純 struct {} 方式放入,沒有圖形介面,只是為了測試效能, : 讀前面很快,讀不到一半就開始 swap,差不多也是一秒一筆。 : 60萬筆資料,純資料而言一筆不到1K,全讀到資料庫可能不到600MB, : 你的記憶體有600MB嗎? 原 po 第二篇文章就說了, 1G RAM : 就算有,依我的經驗,實際的記憶體使用是數倍於預期的, : 如果有 4G 的記憶體,或許可以用不到一秒一筆的 swap。 : 更何況是用 TStringList 這種功能複雜的物件.... : 個人認為,寫程式不只是功能做出來就好了, : 過程中應該要時時注意效能的因素。 : 當你決定把 60萬筆資料放入記憶體(TStringList總要記憶體吧) : 而不是使用資料庫、檔案排序直接搜尋比對等方式, : 應該是不合理的評估 噗, 一次把 60 萬筆資料塞記憶體, 容我說一句, 是腦殘的行為, 如果只是為了解析 不過, 他後來已經改成單純 File I/O 了 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.67.4.232