C++中的快速CSV解析器
Fast CSV parser in C++
我正在尝试读取一个有20k行以上的.csv文件,每行有大约300个字段。
我使用自己的代码逐行读取,然后将行分隔为字段,并将字段转换为相应的数据类型(如整数、双精度等)。然后这些数据通过它们的构造函数传输到类对象。
然而,我发现它不是很有效。读取这些20k多条线并创建20k多个对象大约需要1分钟。
我在谷歌上搜索过快速csv解析器,发现有很多选项。我试过一些,但对时间表现不是很满意。
有人有更好的方法来读取大的.csv文件吗?非常感谢。
解析或处理文件的一种有效方法是在开始解析之前将尽可能多的文件读入内存。
自计算机诞生以来,文件I/O一直是计算机系统中速度较慢的部分之一。例如,解析数据可能需要1微秒。从硬盘驱动器读取数据可能需要1毫秒==1000微秒。
我通过为数据分配一个大数组,然后将数据读取到数组中,使程序更快。接下来,我处理数组中的数据,并重复此操作,直到处理完整个文件。
另一种技术称为内存映射,操作系统根据需要将文件读取到内存中。
请编辑您的帖子以显示瓶颈所在的代码。
相关文章:
- 正在将csv文件读取为双精度矢量
- 如何选择在 csv 文件中输出的位置
- 有没有办法在不使用 getline() 的情况下从.csv文件中读取?
- 如何从 CSV 获取数据并将其存储在 C++ 中的表对象中
- 无法读取C++中的 CSV 文件
- 流:CSV 文件中的换行符
- 是否可以使用 Python csv 阅读器读取使用 C++ std::setw 生成的文件?
- 使用从文件(stod、strtod、atof)中提取的数据C++从字符串转换为双精度.csv
- 将一维数组写入 CSV C++中的不同列?
- 如何从CSV加载堆栈?C++
- 如何正确格式化csv文件?
- 正在分析CSV文件-C++
- 如何获取组件和搜索 CSV 文件
- C++ 中的 CSV 文件管理(特别是设置标头和每个标头将分别具有的值)
- 无法逐行读取.csv文件
- 以CSV格式编写特征矢量Xd
- 非常快速地阅读 CSV 文件
- 读取和存储 CSV 数据
- 该程序将.csv文件中的一系列单词放入数组中,然后随机生成句子.但它不起作用
- CSV文件之间的差异,使用getline()产生不同的结果