CSVParser(LINQtoCSV VS LumenWorks.Framework.IO)

Posted on 2013-12-09 15:38  xiaomaogong  阅读(434)  评论(0编辑  收藏  举报

最近遇到一个大csv文件解析问题,场景是需要读取某个比较大的csv文件(8000+条数据)然后进行一些验证并把没有通过验证的数据再输出.

起初尝试过LINQtoCSV

  •好处:能够将csv文件反序列化成相应的对象,便于之后用Linq的验证操作

  •遇到的问题:性能低下,需要话20+分钟反序列号(8000+数据)

 

解决方案:使用 LumenWorks.Framework.IO(内部参照的是System.IO.StreamReader

  •优点:高效,只花几秒钟读完整个文件(8000+数据)

  •不足:不能用面向对象的方式方便地进行复杂的数据处理

该API的具体实现可参照:http://www.codeproject.com/Articles/9258/A-Fast-CSV-Reader?fid=142714&df=10000&mpp=10&noise=1&prof=True&sort=Position&view=Quick&spc=Relaxed&fr=11#xx0xx

 

总结:当对一个数据量比较大的文件进行操作的时候,且如果在数据处理逻辑要求不复杂的情况下,可以不采用linq(不用对象的形式避免反序列话的性能开销),而是应该直接通过流式读取解析以获得更好的性能。

Copyright © 2024 xiaomaogong
Powered by .NET 8.0 on Kubernetes