text_iarchive和binary_iarchive之间的区别

时间:2013-03-12 22:16:24

标签: boost

使用binary_iarchive比text_iarchive有任何性能优势吗?我只知道binary_iarchive是不可移植的,text_iarchive是可移植的。我正在寻找序列化库,通过它我可以直接将stl :: map写入文件并稍后阅读。

2 个答案:

答案 0 :(得分:1)

为什么不编写测试用例并对其进行配置?但是我会假设二进制文件更快,因为例如32位int因为文本可能占用10个字节(80位),但是二进制它将是4个字节。另一方面,这意味着如果您的大多数值低于999(在基数10中),则使用文本可能会更快。无论如何运行一些典型的数据集和配置文件,看看什么最适合你。

然后例如boost::serialization将添加一些开销来跟踪写入的内容以及是否需要处理指针。

然而,文件I / O通常非常慢,因此如果性能问题,您可能希望从文件中读取尽可能少的字节。

另一方面,如果你在一个程序中读取文件一次,即慢速文件I / O不会影响所有性能,我会选择可移植性。但请记住,无法保证数字可以安全地从64位程序移植到32位程序。如果64位系统具有64位int且32位系统具有32位int s,则即使使用文本存档也可能会出现问题。

答案 1 :(得分:0)

文本存档比二进制存档稍大。如果可移植性是您主要关心的问题 - 请考虑使用portale binary archive