[問題] 大量讀檔與執行效率

看板Fortran作者 (I love Whisky)時間12年前 (2012/03/10 02:24), 編輯推噓1(107)
留言8則, 3人參與, 最新討論串1/1
最近在做一個資料處理問題,問題簡述: 資料有20000個記事本檔案,每個檔案有兩欄各1200筆資料, 撰寫一支程式依序開啟這20000個檔案,並分別取出每個檔案中第100筆位置上的資料。 程式撰寫上沒問題,但在執行上另我滿疑惑,照理說做這種事情應該很快, 但是PRINT進度在螢幕上看目前進行到第幾個檔案讀取卻發現很慢, PRINT到螢幕大概是每10個檔案出現一次進度(確定並不影響效率), 執行很慢的時候發現CPU使用率並未全速, 以四核心CPU來說,合理應該使用25%,但變慢時只使用大概5%, 也確認過記憶體使用狀況並未暴增,也不應該會暴增, 幾番測試,發現造成變慢是在進行READ階段, READ是否就牽涉到電腦本身I/O部分,但不會涉及CPU使用率? 在READ部分變慢是否能夠改善? 也嘗試過檔案OPEN後,要CLOSE的處理,但並未改善。 -- -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 112.105.242.151

03/10 02:36, , 1F
硬碟比你想像的慢很多 循序讀檔更是慢 改用binary應該有幫助
03/10 02:36, 1F

03/10 02:41, , 2F
印象中有一種技巧是把ascii檔當binary讀 不用改動原檔
03/10 02:41, 2F

03/10 02:42, , 3F
不過個人沒試過就是了
03/10 02:42, 3F

03/10 02:52, , 4F
可否另請問是否知道如何讓write直接是binary格式?
03/10 02:52, 4F

03/10 02:54, , 5F
之前嘗試書上提到的參數,但一直都沒成功
03/10 02:54, 5F

03/10 02:55, , 6F
上述問題確實是已經與CPU無關了,純粹卡在I/O上?!
03/10 02:55, 6F

03/10 10:24, , 7F
樓上! 沒錯 @我試過 就算用RAMDISK 速度也沒變多快
03/10 10:24, 7F

03/10 10:24, , 8F
s不信的話可以自己試試看!
03/10 10:24, 8F
文章代碼(AID): #1FMahEyG (Fortran)
文章代碼(AID): #1FMahEyG (Fortran)