簡體   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