在我的大学里,我必须衡量使用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
在序列化期间使用归档,但我无法看到是否有一种方法可以从归档中提取所需的字节数量?我对升级文档不是很熟悉所以我可能会遗漏一些东西。
答案 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
MPI packed_oarchive
可能会进行额外压缩。我没有在快速扫描的文档中找到这个。