1

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

4

2 回答 2

1

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

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

但是,文件 I/O 通常非常慢,因此如果您关心性能,那么您可能希望从文件中读取尽可能少的字节。

另一方面,如果您在程序中读取一次文件,即慢速文件 I/O 不会影响我将使用可移植性的整体性能。但请记住,不能保证数字可以安全地从 64 位程序移植到 32 位程序。如果 64 位系统有 64 位int,而 32 位系统有 32 位int,即使使用文本存档也可能会出现问题。

于 2013-03-12T23:59:58.093 回答
0

文本档案会比二进制档案大一些。如果可移植性是您最关心的问题 - 请考虑使用portale 二进制存档

于 2013-03-13T10:45:54.327 回答