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