Joh*_*nti 3 .net c# io readline streamreader
我有一个文本文件,可能有多达1百万行,我有一个代码一次读取一行文件,但这需要花费很多时间......很多很多时间.c#中是否有一种方法可以优化此过程,并提高读数.这是我正在使用的代码.
using(var file = new StreamReader(filePath))
{
while((line = file.ReadLine()) != null)
{
//do something.
}
}
Run Code Online (Sandbox Code Playgroud)
有关批量阅读这些内容或改进流程的建议吗?
谢谢.
谢谢你们的评论.这个问题与\有关,我正在使用SmartXls库写入Excel,这导致瓶颈.我联系了开发人员来解决这个问题.所有建议的解决方案都适用于其他场景.
好吧,这段代码会更简单,如果你使用的是.NET 4或更高版本,你可以使用File.ReadLines:
foreach (var line in File.ReadLines())
{
// Do something
}
Run Code Online (Sandbox Code Playgroud)
请注意,这不一样ReadAllLines,因为ReadLines返回一个IEnumerable<string>懒惰地读取行,而不是一次读取整个文件.
执行时的效果与原始代码大致相同(它不会提高性能) - 这只是更容易阅读.
从根本上说,如果你正在阅读一个大文件,这可能需要很长时间 - 但只读一百万行不应该花费很多时间.我的猜测是,无论你用线条做什么都需要很长时间.您可能希望并行化,可能使用生产者/消费者队列(例如via BlockingCollection)或TPL Dataflow,或者只使用Parallel LINQ Parallel.ForEach等.
您应该使用分析器来确定花费时间的位置.如果你从一个非常缓慢的文件系统阅读,然后它可能是真的是被抽空阅读.我们没有足够的信息来指导您,但您应该能够自己缩小范围.
| 归档时间: |
|
| 查看次数: |
1813 次 |
| 最近记录: |