2013-03-12 44 views
1

使用binary_iarchive over text_iarchive有什麼性能優勢嗎?我只知道binary_iarchive是不可移植的,text_iarchive是可移植的。我正在尋找序列化庫,通過它我可以將stl :: map直接寫入文件並稍後閱讀。text_iarchive和binary_iarchive之間的差異

回答

1

爲什麼不寫一個測試用例和配置文件呢?但我會假設二進制更快,因爲例如32位int文本可能佔用10個字節(80位),但在二進制它將是4個字節。另一方面,這意味着如果您的大部分值都低於999(以10爲底),則使用文本可能會更快。無論如何,運行一些典型的數據集和配置文件,看看什麼最適合你。

然後,例如boost::serialization會增加一些開銷以跟蹤寫入的內容以及是否需要處理指針。

但是,文件I/O通常非常緩慢,因此如果性能是您關心的問題,您應該儘可能從文件中讀取儘可能少的字節。

另一方面,如果您在程序中讀取一次文件,即緩慢的文件I/O不會影響整個性能,那麼我將使用可移植性。但請記住,不能保證數字可以安全地從64位程序移植到32位程序。如果64位系統有64位int s,而32位系統有32位int s,即使使用文本存檔,也可能會出現問題。

0

文本存檔將比二進制文件更大。如果便攜性是您的首要關注點 - 請考慮使用portale binary archive

相關問題