C ++中的快速CSV解析器

时间:2013-08-14 14:53:47

标签: c++ performance csv

我正在尝试读取带有20k +行的.csv文件,每行有~300个字段。

我使用自己的代码逐行读取,然后将行分隔为字段,并将字段转换为相应的数据类型(例如整数,双精度等)。然后这些数据通过它们的构造函数传递给类对象。

然而,我发现效率不高。花了大约1分钟读取这些20k +线并创建了20k +对象。

我用Google搜索了快速csv解析器,发现有很多选项。我尝试了其中一些,但对时间表现不太满意。

有没有人有更好的方法来阅读大型.csv文件?非常感谢提前。

1 个答案:

答案 0 :(得分:2)

解析文件或处理文件的有效方法是在开始解析之前将尽可能多的文件读入内存。

自计算机诞生以来,文件I / O一直是计算机系统中较慢的部分之一。例如,解析数据可能需要1微秒。从硬盘驱动器读取数据可能需要1毫秒== 1000微秒。

我通过为数据分配大数组然后将数据读入数组,使程序更快。接下来,我处理数组中的数据并重复,直到处理完整个文件。

另一种技术称为内存映射,其中OS根据需要处理将文件读入内存。

请编辑您的帖子以显示瓶颈所在的代码。