日期:2014-05-17  浏览次数:20814 次

c#读取大容量txt文件,如何降低cpu利用率
目前的一个Log日志显示工具,读取大概10M左右的log文件(10W行左右)

将读取到的数据,按照一定的规则,放入datagird中,之后再进行排序和行变色。

目前做法是:首先读取文件到流,然后readline,读取一行到一个字符串中,在分割这个字符串,按列放入dagagird的一行中

如此循环下去

但这样做会造成cpu利用率非常高,因为有自动读取功能,几秒自动读取一次,这样就会造成cpu一直百分百

有什么改进方法吗? string和StringBuilder这点我知道

------解决方案--------------------
我估计啊,CPU占用率高是因为你把数据放到了UI了,UI大量刷新,所以CPU比较累。

你试试先不放到UI上,再看看效果。

遇到这种问题先尝试分解问题,然后逐个解决。

一定要先找到瓶颈所在。
------解决方案--------------------
可以尝试把文件分割后再挨个读取,这样效率方面应该有所提升
------解决方案--------------------
你说的几秒自动读取一次,是从头读还是只读取新Log的内容?
可以考虑单开一个线程,负责读取、处理数据,之后把结果传给UI,再由UI添加,可能会好些。
------解决方案--------------------
log 文件内容是追加进去吗? 如果是,当 StreamReader 读取完之后,记录下 StreamReader.BaseStream.Position 属性的值,下次读取时,把记录的值反赋回去,这样从上次的结束点开始读,不重复读之前的
------解决方案--------------------
其实我也想知道如何弄 因为我之前也做过大文件读取 然后就亖掉了进程...
我也用线程了 但是还会卡亖掉 一会...
------解决方案--------------------
最简单的办法
采用分页方式
别纠结这个了
没什么含义
还是想想怎样提高用户体验。