提升MPI和序列化 - 序列化对象的大小

时间:2014-03-17 13:35:58

标签: c++ serialization boost mpi

在我的大学里,我必须衡量使用MPI发送的C ++ STL类型序列化的开销。

测量时间很容易,但是如果我想测量例如需要多少字节来发送1000个字符的vector和1000个字符的数组,我就会遇到问题。查看Boost.MPI文档:http://www.boost.org/doc/libs/1_55_0/doc/html/mpi/tutorial.html#mpi.user_data_types 我可以看到它使用Boost.Serialization进行序列化:http://www.boost.org/doc/libs/1_55_0/libs/serialization/doc/

Boost.Serialization在序列化期间使用归档,但我无法看到是否有一种方法可以从归档中提取所需的字节数量?我对升级文档不是很熟悉所以我可能会遗漏一些东西。

1 个答案:

答案 0 :(得分:6)

这里是:

#include <iostream>
#include <sstream>
#include <boost/archive/binary_oarchive.hpp>
#include <boost/serialization/vector.hpp>

int main()
{
    std::ostringstream oss;
    boost::archive::binary_oarchive oa(oss);

    std::vector<char> v(1000);

    // stream
    oa << v;

    std::cout << "The number of bytes taken for the vector in an archive is " << oss.str().size() << "\n";
}

在我的系统上打印:

The number of bytes taken for the vector in an archive is 1048

查看 Live On Coliru

MPI packed_oarchive可能会进行额外压缩。我没有在快速扫描的文档中找到这个。