精華區beta Programming 關於我們 聯絡資訊
※ 引述《neway.bbs@bbs.ncku.edu.tw (南無阿彌陀佛)》之銘言: > ※ 引述《chs66.bbs@ptt.cc (chs66)》之銘言: > : 你不會是讀一筆 > : 之後比對幾萬筆然後這幾萬比都是開檔讀取的 > 總之怪怪的 不該這麼慢 > 希望原Po者 > 能將讀取的程式碼 po 出來 > 大家好幫忙瞧瞧 我個人認為每秒一筆是正常的...我認為原因是記憶體不足..swap過多.. 我很久以前也曾經試著把"字典檔",大概約有10萬筆吧 用純 struct {} 方式放入,沒有圖形介面,只是為了測試效能, 讀前面很快,讀不到一半就開始 swap,差不多也是一秒一筆。 60萬筆資料,純資料而言一筆不到1K,全讀到資料庫可能不到600MB, 你的記憶體有600MB嗎? 就算有,依我的經驗,實際的記憶體使用是數倍於預期的, 如果有 4G 的記憶體,或許可以用不到一秒一筆的 swap。 更何況是用 TStringList 這種功能複雜的物件.... 個人認為,寫程式不只是功能做出來就好了, 過程中應該要時時注意效能的因素。 當你決定把 60萬筆資料放入記憶體(TStringList總要記憶體吧) 而不是使用資料庫、檔案排序直接搜尋比對等方式, 應該是不合理的評估 -- 夫兵者不祥之器物或惡之故有道者不處君子居則貴左用兵則貴右兵者不祥之器非君子 之器不得已而用之恬淡為上勝而不美而美之者是樂殺人夫樂殺人者則不可得志於天下 矣吉事尚左凶事尚右偏將軍居左上將軍居右言以喪禮處之殺人之眾以哀悲泣之戰勝以 喪禮處之道常無名樸雖小天下莫能臣侯王若能守之萬物將自賓天地相合以降甘露民莫 之令而自均始制有名名亦既有夫亦將知59-105-187-152.adsl.static.seed.net.tw