1

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

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

但是,我发现它不是很有效。读取这 20k+ 行并创建 20k+ 对象大约需要 1 分钟。

我用谷歌搜索了快速 csv 解析器,发现有很多选择。我已经尝试了其中一些,但对时间表现不是很满意。

有没有人有更好的方法来读取大型 .csv 文件?提前谢谢了。

4

1 回答 1

2

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

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

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

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

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

于 2013-08-14T16:15:31.613 回答