读取csv文件的最快方法是什么?

时间:2013-05-28 14:29:10

标签: performance memory time-series compression

我需要将csv文件读入主内存,我想知道最快的编程语言。 该文件包含一个时间序列:

时间,价值
1366810163,177.413
1366810164,177.303
1366810165,177.413
1366810166,178.9797

我想评估压缩数据的I / O性能改进,因为它已在此处完成: http://entland.homelinux.com/blog/2006/10/25/reading-files-as-fas-as-possible/ 此博客来自2006年,仅针对C ++编程语言。 但我也想评估解压缩的I / O成本。

因此,您可以帮助我掌握您在任何编程语言/操作系统方面的经验。 然后我会总结你的答案并做一个指导。 谢谢你的帮助!

2 个答案:

答案 0 :(得分:1)

假设我可以选择硬件来优化此任务,原始数据保持原样,不需要解析,并且我们对硬件具有低级访问权限,然后根据这些假设,XIP将是最快的 - 加载时间是零!

答案 1 :(得分:0)

如果写得正确,带有zlib的C或C ++将是最快的。 (汇编程序可能会更快,但对于大型程序来说,它越来越难以击败好的编译器。)

zlib's gz* functions将读取使用gzip压缩或不透明压缩的文件。与从大容量存储设备读取更多未压缩数据相比,从大容量存储设备读取更少数据并解压缩通常更快。即使使用SSD。

在我的2 GHz i7上,我可以读入和解析56.2 MiB CSV文件,其中201429记录的24个字段,如果未压缩,则每个CPU时间约为0.3秒,如果压缩则为0.4秒。在清除内存缓冲区后,实时读取SSD,如果压缩则为0.5秒,如果未压缩则为0.6秒。 (注意CPU时间和实时之间的反转。)