繁体   English   中英

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

[英]What is the best way to add a header to a large file

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

在C ++中

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

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

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

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

在任何语言中, 唯一的方法是将标头写入新文件,将旧文件的内容复制到其中,然后重命名该文件。

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

如果您自己生成文件(1-2Gb),则只需为文件开头的标题保留字节。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM