0

我需要将一个 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 成本。

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

4

2 回答 2

1

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

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

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

于 2013-05-28T18:37:25.577 回答
0

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

于 2013-05-28T15:01:06.463 回答