开启20个线程去读取txt文件
一个txt 大概有20W 行,我要把每行读取出来插入数据库,但是速度太慢,
如何开启20个线程去读取,然后插入数据库???
------解决方案--------------------
我没有研究过那个原理,只是举例而已,难免有不当之处。我的多年的经验告诉我,这里肯定不适合拆出多线程,我只是为了表达这个意思而已,实际影响速度的因素很多,拆分线程处理的话,只会减慢速度。单线程的GHOST都可以达到最快的处理速度(DOS下面只能单线程),可见不是多线程了就可以如何如何的。
------解决方案--------------------不管是读文件还是写数据库,对于普通硬盘来说这种情况多线程只会更慢,决策与CPU或者DMA没有关系。
如果内存不够(非批量操作)或者文件与数据库位于不同的存储介质,读文件与写数据库应该有各自的线程处理。
------解决方案--------------------不管是否DMA(DMA主要是异步实现,CPU一般都不会成为瓶颈),磁头只有一个,有序访问总是最好的,硬盘IOCP的要点就是尽量有序访问硬盘。
------解决方案--------------------
有一个错误,硬盘IOCP的要求是磁头尽量的少移动。
------解决方案--------------------sp大神这次出错啦。
这里的“资源”可不仅仅是cpu或内存,
还包括io和irq(这应该就是木桶效应的最低处了)
事实上除了那些分布式/大数据,等“高端”应用,常规应用中,
是否需要多线程,应该是从业务模型和需求逻辑来分析。比如确实是有多组数据模型需要运行,同时这些模型的参数不确定、不一致。
单纯只在性能角度去做并行优化,除了多请求并发这块,还没发现其他情况需要的。
------解决方案--------------------现在的电脑瓶颈都在磁盘而不在CPU,CPU几线程就开几条线程执行读取就能充分利用CPU了,不过读取文件的话瓶颈还在磁盘
------解决方案--------------------不知道你有没有发现这样的“简单”应用也还是需要多线程的。。
------解决方案--------------------