快速'C'库可以直观地管理非常大的文件

时间:2010-01-19 05:44:41

标签: c large-files stdio

我需要保存从连接到我的PC的其他设备流式传输(800Mb / s)的大量数据(> 500GB)。速度排除了数据库的使用,例如MySQl / ISAM和我正在寻找一个快速,轻量级的库,它位于'C'stdio文件lib(即fopen / fclose / fwrite)之上,这将允许我写/读一个非常大的文件(最多可用磁盘) -空间)。

在幕后,大文件可以分解为较小的文件,例如1GB,我希望API能够处理这些细节。

数据以压缩二进制格式到达PC,在将其写入硬盘之前无需进一步处理。

该库应适用于Windows和Linux。

2 个答案:

答案 0 :(得分:1)

如果您需要随机访问数据,请查看内存映射文件。

它允许您透明地将文件(或文件的一部分)映射到内存中,而无需显式分配记忆和读取数据。它适用于Windows / Linux(有一个包含差异的提升库)。

在Windows上,您可以在32位操作系统上使用多个窗口处理文件>> 4gb。

编辑:抱歉800Mb / s !!我不知道任何能够解决这个问题的磁盘。你可以看一下固态硬盘阵列的SSD驱动器 以前有图像采集卡使用附加的驱动器作为一个简单的字节系列,没有文件系统来获得非常高速的持续写入。我不知道你是否需要这样的东西。

答案 1 :(得分:0)

为了达到极致速度,我建议你去高度平台。

目标是尽可能接近将输入设备直接连接到硬盘驱动器。一种方法是为直接写入硬盘驱动器的输入设备编写驱动程序。

通用算法是使用非常大的循环字节缓冲区或使用多个缓冲区。您需要额外的空间来补偿输入设备和输出设备之间的速度差异;只要输入设备不停。

如果您可以暂停输入设备,则问题会变得更加容易。