看板 C_and_CPP 關於我們 聯絡資訊
需要處理的資料,單筆固定 100 bytes 資料不會超過 30000 筆 但是不是全部資料都需要用到 請問用什麼方式去讀會比較好? 爬文爬到 作者 BETNPP (NPP) 看板 C_and_CPP 標題 Re: [問題] 比較有效率的文字檔案寫入方式 時間 Mon Aug 25 10:13:21 2008 ─────────────────────────────────────── 一次從硬碟讀多一點資料呢? 應該會比一直去跟硬碟小筆資料快 因為request次數變少了吧 之前處理過4GB的純文字檔就是用這樣處理的 我一開始的想法是,要使用資料的時候再去檔案讀 以每筆資料 70 bytes,30000 筆共 21 MB 的資料下去跑測試 一次讀一筆,讀入 30000 筆 共花 3714 毫秒 平均一筆資料 0.124 毫秒 再來試著一次讀取全部資料,一樣是那 21 MB 的測試資料 共花 108 毫秒 平均一筆資料 0.004 毫秒 問題在於,檔案有大有小,有些資料又不是全部需要 只有 100 筆資料時,一次讀取全部資料花 1 msec,分次讀取花 20 msec 一次讀取全部資料大概跟分次讀 5 筆資料消耗同等時間,一次讀取是比較好的選擇 但檔案大時 有可能共有 30000 筆資料且 30000 筆資料全部都需要,那一次讀取會快 40 倍 也有可能有 30000 筆資料但只需要其中 1 筆資料,那分次讀取會快 1000 倍 這時候一次讀取跟分次讀取各有勝場,無法比較 需要多少資料是看使用情況決定的,事前沒辦法猜測 可以確定的是,只需要一筆資料的機會不會太低 因為資料是照時間排序的,使用者有可能只需要最新的資料 請問有沒有比較好的方法處理這個問題呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.170.3.244
LiloHuang:用 Memory Mapped File 的方式來讀會好一點 05/18 00:35
os653:搞定了,感謝您 05/18 01:30
os653:以三萬筆資料來說,讀少資料的話,MMF與分次讀取不相上下 05/18 01:33
os653:三萬筆全讀入的話,MMF 比一次讀取慢約四倍,可以接受 05/18 01:34
os653:平均效能應該能夠提升不少 ψ( ̄︶ ̄ ) 05/18 01:36
LiloHuang::) 恭喜 05/18 14:18