哪种类型的文件访问使用

Which type of file access to use?

本文关键字:访问 文件 种类 类型      更新时间:2023-10-16

我只为Windows建立一个自定义文件格式的IO框架。这些文件在100MB和100GB之间。读取/写入以不可预测的位置序列为几百kb。不过,阅读速度是最关键的,但是,CPU使用可能会胜过,因为我听到Fstream在与SSDS合作时可能会给它带来真正的凹痕。

最初,我打算使用FSTREAM,但是当我将更多红色添加到文件IO中时,我发现了许多其他选项。由于我对这个主题的经验很少,因此我对使用哪种方法感到沮丧。我所算出的选项是fstream,file和映射文件。

到目前为止,在我的研究中,我发现的只是很多矛盾的基准结果,具体取决于我不了解的块大小,缓冲尺寸和其他瓶颈。如果有人可以澄清这些选项之间的优势/缺点,这将是有帮助的。

在这种情况下,瓶颈主要是您的硬件,而不是您使用的库,因为您正在阅读的块是相对较大的200KB -5MB(与扇区大小相比)和顺序(所有这些一个)。使用硬盘(高寻求时间),可以读取比优化缓存所需的更多数据的感觉。对于SSD,我不会使用大型缓冲区,但仅读取确切所需的数据,因为寻求时间不是一个大问题。

内存映射的文件很方便,可以完全随机访问数据,尤其是在小块(甚至很少)中。但是需要更多代码来设置内存映射的文件。在64位系统上,您可以(实际上)映射整个文件,然后让OS缓存系统优化读取(多次访问对同一数据)。然后,您只需将指针返回所需的内存位置即使需要临时缓冲或使用memcpy也可以返回所需的内存位置。这将非常简单。

fstream为您提供了与文件相比,我认为在您的情况下使用的功能并不多。