看板 C_and_CPP 關於我們 聯絡資訊
我想解釋為什麼會有這樣的需求 情況是有一個很大的檔案要讀入(約10GB) 為了節省mem空間 我們採取了一個作法 先掃描一次整個檔案 由裡面某些數據 可以了解我們要配置多少記憶體 接著配置剛好的記憶體 然後再掃描一次檔案 這次才真的去parse 把資料按format填入 因為我覺得掃描2次似乎有點多餘,而且多花時間,才有上一篇的想法 不過現在知道free, delete的限制 似乎掃2次才是個省mem的好方法 不知有沒有人遇到類似的情形?? ※ 引述《Arton0306 (Ar藤)》之銘言: : 最近遇到一個問題 : 有一很大筆的資料要讀進來 (1G個整數) : 如果用vector由於它會2倍2倍成長 : 有些空間會被浪費掉 : 如果用link list : 每個node會有個pointer也造成浪費 : 所以我想可以在link list裡面放個buffer 每個buffer可存多個元素 : 這樣pointer造成的浪費就比較少 : 不知道這樣的結構是否有什麼特別的名稱? : C++有提供類似的庫以供使用嗎? : 順便附上我寫的程式碼 : 不過還有一些error沒清完 : http://ideone.com/9FfGJ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 203.192.162.252
shadow0326:一定要把整個檔案塞到ram裡嗎? 可否切成多個page? 12/02 15:00
Arton0306:為了得知恰好的配置空間 一定必須要掃完整個檔一次 12/02 15:58
tropical72:掃二次+1,但若檔案格式固定,在掃第一次時可能可以較快. 12/02 18:58