看板 Visual_Basic 關於我們 聯絡資訊
請輸入專案類型(網站專案或者應用程式專案):應用程式專案 因為實驗上的需要, 將儀器公司的檔案export成txt file.這個txt file的格式如下: ## Parameter A = xxxx ## ... . . . 以下是數據的部分(用,區隔時間與強度) time,intensity 每個檔案大約都超過100 MB 參考板上與網路上的的一些文件 使用以下的方法開檔 Dim fileReader As System.IO.StreamReader fileReader = My.Computer.FileSystem.OpenTextFileReader(TempFileName) 並且將資料放到陣列之中 Do .... ... ReadTemp = Split(ReadTemp2, ",") MassSpectraX(SpectraIndexNum - 1, SpectraDataNum) = ReadTemp(0) MassSpectraY(SpectraIndexNum - 1, SpectraDataNum) = ReadTemp(1) SpectraDataNum = SpectraDataNum + 1 DataNum = DataNum + 1 Loop 這個部分十分耗時, 導致完成一個檔案讀取與資料放置超過五分鐘.. 不知道有沒有什麼方法可以加速這個過程.. 以前曾經看過網路文章...似乎透過某種方法改寫 SpectraDataNum = SpectraDataNum + 1這樣累加的程序 可以減少記憶體開啟移除的程序達到加速的目的...但我已經找不到那篇文章了 希望大家可以提供建議...感謝 補充說明: 儀器廠商提供原始檔案是binary file但是儲存的結構(structure)不明.. 該儀器公司的軟體可以將原本的binary file轉成文字檔 我希望可以寫一個程式讀取這些文字檔, 並且進行圖譜瀏覽以及後續積分等批次處理 目前功能上大致完成, 但是讀檔加上把圖譜資料放進陣列速度緩慢 補充說明2: 如果先寫一個程式批次將檔案轉成binary格式... 這部分的耗時可以忽略(放著跑) 然後用binary方式讀取,這樣會不會比較有效率?(快速瀏覽圖譜) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 128.123.166.210
meto000:改用Input(fileNum,time(Num),intensity(Num))會比較快嗎? 04/28 11:52
horngsh:可以用MemoryStream先將讀到的DATA放進去用它當BUFFER較快 04/28 11:58
niwat:使用MemoryStream是指..讀檔案時使用memorystream嗎? 04/28 12:42
※ 編輯: niwat 來自: 128.123.166.210 (04/28 13:08)
hateking:MemoryStream可以快多少@@? 最近我也在做類似的東西, 04/28 16:14
hateking:不過大小頂多才10幾M,所以還好 04/28 16:15
今天已經寫到晃神了...所以還沒有好好的試MemoryStream 我之前有寫過類似的東西,但是因為Data Acquisition的部分也是自己寫的 所以原始資料檔就是Binary的...結構也是自己訂的 30~50 MB的檔案開啟處理都還算快速(跟這次的程式比較) 可能是可以直接Buffer從抓位元數,存進陣列中 且數值本身暫的的大小也比文字模式小,加上不需要用split處理 所以會比較快吧? 也許會朝向把檔案批次再轉成binary格式的檔案... 有結果後再分享....其間各位先進有任何建議請不吝與小弟分享 ※ 編輯: niwat 來自: 68.35.0.83 (04/28 16:33)
horngsh:迴圈中儘可能不要放方法呼叫或較耗時的東西... 04/29 06:32