回答问题迎娶漂亮美眉(100分)

  • 主题发起人 主题发起人 bluepoint8868
  • 开始时间 开始时间
B

bluepoint8868

Unregistered / Unconfirmed
GUEST, unregistred user!
我搞了一个打印管理程序,其中有一个过程是在一个*.prn(打印机自动生成的文件,它以16进制的格式记录了所有的打印信息,包括页面设置,页面大小,打印份数,打印尺寸等等,我们判断打印信息的过程就是读这个文件的过程)中判断打印页数(比如说是以AAA为换页的标志,出现几次就代表总共有多少页),打印尺寸(比如说123为A4,出现了A4,那么在同一个*.prn文件中就不会再出现其他的打印尺寸)!
我是先把这个*.prn文件全部读一遍,在用POS函数加循环来判断AAA的个数,得到打印页数,同样的方法的到打印尺寸。程序本身没有错。如果这个*.prn文件不大,还不明显。如果超过30M的话,时间就暴慢啊,(我看和死机没什么区别啊)
我的问题是有没有什么算法何以缩短时间!
 
neuropathy!!
 
没有办法的啦,即使你换顶级配置,也不会有速度上的提高的,呵呵,本身Windows生成这个文件是很快的(我打四万多页纸,生成只用十几分钟),可是你如果去读它,那你想一下,两次读这个文件内容,再用循环加判断,显然快不起来,HOHO,两个办法,要么不做它,要么等到花儿也谢了!
 
这个没有办法,肯定慢死了.
 
你是妹妹?
 
试一试分段处理.将文件分隔成2M一个块,一个块一个线程,最多10个线程.如果多于10个线程,就等待. 类似于网张蚂蚁的处理.
 
楼上的算法没含义,不用试了
要么你换根本途径,就是不读文件,走别的路
要么这样,你用内存较大的机器,然后一次性的把文件读进内存,再在内存中去遍历,这样估计一个文件的处理在20秒左右.我觉得你慢的原因应该是不停的去读文件,所以才慢
还有你可以去看看文件的内存映射的知识,可能会有帮助,我对这个不熟悉
 
呵呵,好美
 
打印的部分单独写成一个线程,使用多线程技术
 
后退
顶部