VC 里面处理30多万行的txt文件时,速度为什么这么慢?

TandyT TandyT 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
我用 CStdioFile 来打开文件,一次性把文件的内容读到内存中,然后对内存中的字符串进行处理。

原txt文件里面,是按行存储一些中文、英文字符,每行都有一个以上的 ‘|’ 字符,一共有30多万行。我想按照所在行的内容里面的 ‘|’字符个数来排序,也就是,把所有行中,每行只有一个 '|' 字符的,排在前面,每行有2个的,排在其次,其它的以此类推。

有点像“畸形”的金字塔,少的在上面,多的在下面,堆积起来。

我在VC 里面的做法是,把前面读取进来的(以文本方式读取进来)字符串,以换行符 CRLF 为标志,逐行读取到一个临时字符串 tem 中,然后,判断这个临时字符串tem 里面有 n 个 '|'字符,然后把它存储到专门存储 n 个 ‘|’字符的字符串里,当把内存中的30多万行都读取完后,也就分析完毕了,然后,依次 把存储一个‘|’字符、存储两个‘|’字符、存储三个 ‘|’字符、、、的字符串内容写入到一个新的 txt文件里面。

但是,发现这样做,速度很慢,我试过不用线程、用单线程、用多线程来分析,效果都一样,非常慢。(如果要分析的 txt 内容比较小,比如几百KB,当然没问题)。

各位大侠,应该用什么方法来实现我的这个功能呢?

谢谢指点!
...全文

相关推荐

评论 72
收藏 已收藏
分享
返回顶部
TandyT
VC/MFC 16,550 成员 421,606 内容