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

Ste*_* Du 6 c++ io header file

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

在C++中

pax*_*blo 4

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

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

这可能是最小的,但它仍然存在。对于 2G 文件,我可能会以半 GB 的块开始,除非内存非常宝贵。这允许更大的文件大小,而不会浪费太多内存,并且四次读/写调用不太可能成为性能问题。

但是,与所有优化一样,要测量,不要猜测。有各种低级事物可能会影响 C++ 标准文档未提及的性能(而且确实如此)。由于您的问题没有提及特定的操作系统,因此我已据此回答,但这些特定的操作系统可能会(a)做出不同的反应;(b) 提供其他可以加快速度的非标准调用。

  • 回复:半千兆块,请参阅[复制时使用的理想内存块大小是多少?](http://stackoverflow.com/questions/5445341/what-is-the-ideal-memory-block-size-复制时使用)。 (2认同)