【发布时间】:2014-03-11 02:45:04
【问题描述】:
我正在为 Windows 的自定义文件格式构建一个 io 框架。文件大小在 100MB 到 100GB 之间。读取/写入在不可预测的位置以几百 KB 到几 MB 的顺序出现。读取速度是最关键的,不过,cpu 的使用可能会胜过这一点,因为我听说 fstream 在使用 SSD 时可以真正削弱它。
最初我打算使用 fstream,但是当我对文件 IO 进行了更多操作时,我发现了许多其他选项。由于我对该主题的经验很少,因此我对使用哪种方法感到很困惑。我列出的选项是 fstream、FILE 和映射文件。
到目前为止,在我的研究中,我发现的只是很多相互矛盾的基准测试结果,具体取决于我不了解的块大小、缓冲区大小和其他瓶颈。如果有人能阐明这些选项之间的优缺点,那将很有帮助。
【问题讨论】:
-
您确定不应该使用数据库吗? (例如,在您的文件中包装 SQLLite)
-
文件格式将包含各种数据库,但其相互关联的方式,我需要对文件进行更多的控制以使其更流畅。