|
本帖最后由 花老板 于 2019-5-26 13:41 编辑
如果一般16G以内的文件,比较好处理的,你内存有多大,你就能处理多大。
一般无非是筛选,过滤,去重,替换,剔除,提取。
首先谈谈这方面文件处理的经验。
1:用字节集处理,这很重要,节省CPU和内存。
2:文件读入,直接读到内存里就行,不要想着读到组件里,如编辑框。
3:文件写出,不要用多线程单个写出,这样很多BUG。
我个人是先存到内存里,然后一次性写出,单出可写1-10G,看你内存和SSD的性能吧。
4:代码里不要调试出每一条数据,CPU可以每秒几百万处理,但不代表你1秒能调试显示出几百万。
这个问题可以用时钟,或者协同线程去处理。
如下面的图,我就是定时1秒统计一次。
5:线程处理数据,不要调用组件,跟第4条一样。
你的组件不可能1秒变化几百万次,这很重要。
反正我生成10G文件(顺便写出到硬盘),也就几秒。
很多人可能遇到过 ,假设10万次写入数据,写到单个文件里。
前面几百几千可能是正常的,后面全是空白,或者乱码。
这就是循环写出的一些问题,可能跟多线程也有些关系。
但,这不重要!
重要的是,你何必非要循环写出,储存到内存里,然后一次性写出,岂不完美?
最近手上有批数据,大概100亿吧,我用了几小时,从SQL Sever转TXT,从TXT提取数据,再储存。
整个过程,非常快,然后处理速度大概1秒15万左右。i7 8700+三星970(读写3000MB+)
补上GIF
|
|