我第一次使用boost / asio库.. 这里有一些性能问题..请帮帮我.. 抱歉我的英语不好
我有一个tcp套接字客户端。和这些代码一样。
我使用相同的io_service初始化io_service,tcp :: socket,io_service :: strand。
class(boost::asio::io_service& io_service)
:io_service_(io_service), socket_(io_service), strand_(io_service) {}
以下是设置async_read的代码。
boost::asio::async_read(socket_,
boost::asio::buffer(buffer_.data(), buffer_.header_size()),
strand_.wrap( boost::bind( &handle_recv_header,
shared_from_this(),
boost::asio::placeholders::error,
boost::asio::placeholders::bytes_transferred) ));
和" handle_recv_header" FUNC
if ( !error && buffer_.decode_header() ){
if ( !error && buffer_.decode_header() ){
boost::asio::async_read(
socket_,
boost::asio::buffer(buffer_.data(), buffer_.body_size()),
strand_.wrap(
boost::bind(&handle_recv_body,
shared_from_this(),
boost::asio::placeholders::error,
boost::asio::placeholders::bytes_transferred) ) );
}}
问题是当我测试分发大小为(4~1000字节)
时调用handle_recv_header花费将近0 ms 并且花费0.2(!!!!)秒来调用handle_recv_body
我无法理解为什么需要这么多时间来发送数据包? 我的代码有什么问题吗? 或者更好的方法来制作tcp-socket客户端?
我在堆栈溢出中发现了其他问题。
其中一个解决方案是
myPort->set_option(tcp::no_delay(true))
但没有效果。
THX。