作者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