C++中的快速CSV解析器

Fast CSV parser in C++

本文关键字:CSV C++      更新时间:2023-10-16

我正在尝试读取一个有20k行以上的.csv文件,每行有大约300个字段。

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

然而,我发现它不是很有效。读取这些20k多条线并创建20k多个对象大约需要1分钟。

我在谷歌上搜索过快速csv解析器,发现有很多选项。我试过一些,但对时间表现不是很满意。

有人有更好的方法来读取大的.csv文件吗?非常感谢。

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

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

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

另一种技术称为内存映射,操作系统根据需要将文件读取到内存中。

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