将标头添加到大文件的最佳方法是什么?

时间:2011-04-03 09:36:24

标签: c++ file header io

如果文件大小约为1-2GB,将标题(例如文件元数据)添加到现有文件的最佳方法是什么?

在C ++中

4 个答案:

答案 0 :(得分:4)

最好的方法是简单地将标题写入 new 文件,然后附加旧文件的内容。

C ++没有提供在现有文件的开头插入的方法,所以这真的是最好的选择。只需确保从旧文件中读取足够大的块并将它们附加到新文件中。虽然缓冲可以缓解大部分在小块中执行此操作的问题,但是仍然会有更多函数调用的性能下降。

这可能很小但它仍然存在。对于一个2G文件,我可能会开始以半制作的方式进行,除非内存非常宝贵。这允许更大的文件大小而没有太多的内存浪费,并且四次读/写调用不太可能是性能问题。

但是,与所有优化一样,衡量,不要猜测。有各种低级别的东西可以影响性能,C ++标准文档没有提到(并且正确地如此)。由于您的问题没有提到特定的操作系统,我已基于此回答,但这些特定的操作系统可能(a)反应不同; (b)提供可以加快的其他非标准电话。

答案 1 :(得分:1)

方式,以任何语言执行此操作,是将标头写入新文件,将旧文件的内容复制到其中,然后重命名该文件。

答案 2 :(得分:0)

取决于(1)文件系统及其参数(如块的大小),(2)您必须添加的标题的大小,(3)谁正在编写文件。

如果你自己生成文件(1-2Gb),那么只需在文件开头保留标题的字节。

答案 3 :(得分:0)

如果您真的想要超级性能,我想您也可以使用一些低级文件系统操作。但我不建议走那条路。

我也喜欢Sege Dundich发布的关于在文件最初编写时为标题保留空间的想法,但是你可能没有这个选项。