我在网络驱动器上有一个csv平面文件系统,在任何时候我都可以读取大约500-600个csv文件,每个文件有几千行。我目前正在使用以下代码进行阅读,
var parser = new TextFieldParser(fileName) {TextFieldType = FieldType.Delimited};
parser.SetDelimiters(",");
while (!parser.EndOfData)
{
var fields = parser.ReadFields();
}
但即使这需要很长时间。我正在寻求加快速度。任何人都可以提出建议。
答案 0 :(得分:2)
我在Codeplex上的这个CSV parser取得了不错的成绩。
但我强烈建议您分析一下代码,找出真正的瓶颈在哪里,网络驱动器,CSV解析器或解析后的数据处理。
<强>更新强>
识别瓶颈的一种非常实用的方法可能是衡量以下任务的总执行时间:
使用Windows文件浏览器将文件从网络驱动器复制到本地驱动器(数据传输时间)。
使用简单的.NET程序从网络驱动器读取文件,例如使用 StreamReader 类(从.NET程序传输数据的时间)。
使用CSV解析器从网络驱动器读取和解析文件(数据传输的时间加上解析时间)。
使用CSV解析器读取,解析和处理文件以及数据处理所需的任何内容(数据传输的时间加上解析时间加上处理时间)。
有了这些数字,就应该很容易找出最大的改进潜力所在。根据您花费最多时间的步骤,您可以查看网络基础架构,尝试使用不同的CSV解析器或进一步分析数据处理花费最多时间的位置。
答案 1 :(得分:0)
好吧,我不确定如何与“相当长”进行比较,但我使用Lumen CSV获得了很好的体验,{{3}}是一个基于流的,仅向前的csv解析器。