※ 引述《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