作者Ballantine (I love Whisky)
看板Fortran
標題[問題] 大量讀檔與執行效率
時間Sat Mar 10 02:24:11 2012
最近在做一個資料處理問題,問題簡述:
資料有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
1F:推 wtula:硬碟比你想像的慢很多 循序讀檔更是慢 改用binary應該有幫助 03/10 02:36
2F:→ wtula:印象中有一種技巧是把ascii檔當binary讀 不用改動原檔 03/10 02:41
3F:→ wtula:不過個人沒試過就是了 03/10 02:42
4F:→ Ballantine:可否另請問是否知道如何讓write直接是binary格式? 03/10 02:52
5F:→ Ballantine:之前嘗試書上提到的參數,但一直都沒成功 03/10 02:54
6F:→ Ballantine:上述問題確實是已經與CPU無關了,純粹卡在I/O上?! 03/10 02:55
7F:→ jubilee2:樓上! 沒錯 @我試過 就算用RAMDISK 速度也沒變多快 03/10 10:24
8F:→ jubilee2:s不信的話可以自己試試看! 03/10 10:24