我正在测量从线程A发布事件到链的性能,直到链开始处理它为止。我推测,对于不同数量的接收数据包,从下面的例子中选择500或1,在接收数据包时不会影响到boost::asio::strand
,因为我只是将指针传递给数组数据packets_ptr
到股,我相信不涉及复制。但是,在我单独计算9999999次迭代之后,结果显示它们在不同大小之间甚至不相似。对于1的大小,它总是在1〜9微秒之间,对于500的大小,在50〜85微秒之间。boost :: asio :: strand post方法的性能
//Socket Thread
int packet_count = recvmmsg(mcast_fd, packets, 500, 0, NULL); //OR
int packet_count = recvmmsg(mcast_fd, packets, 1, 0, NULL);
.....
packets_recv_time = timer.getTime();
strand_.post(boost::bind(&handler_class::process_package_method, this, packets_ptr, packets_recv_time, num_of_packets));
.....
//io_service thread
handler_class::process_package_method(...)
{
prcess_beign_time = timer.getTime();
Measure_time = prcess_beign_time - packets_recv_time;
}
嘿坦纳,我很感激你的详细解释。实际上,我正在测量从线程A发布事件到线程的性能,直到线程开始处理它为止。对不起,我昨天赶紧下班:) –