小编bad*_*dfd的帖子

端口性能从Beast.1.0.0-b66降到Boost.1.67.0.Beast

从Beast.1.0.0-b66(使用Boost.1.64.0)迁移到Boost.1.67.0.Beast(即将Beast集成到Boost中)后,我观察到性能急剧下降(CPU消耗急剧增加)。 。毫无疑问,我做错了什么,但我无法想象。

什么是:

typedef beast::http::request<beast::http::string_body> BeastHttpRequest;
Run Code Online (Sandbox Code Playgroud)

就是现在:

namespace http = boost::beast::http;    
typedef http::request<http::string_body> BeastHttpRequest;
Run Code Online (Sandbox Code Playgroud)

什么是:

beast::http::prepare(req);
beast::http::write(stream, req);
Run Code Online (Sandbox Code Playgroud)

就是现在:

req.prepare_payload();
http::write(stream, req);
Run Code Online (Sandbox Code Playgroud)

当然,我还必须进行许多API更改。例如:

req.fields.replace(hdrName, hdrValue);
Run Code Online (Sandbox Code Playgroud)

就是现在:

req.set(hdrName, hdrValue);
Run Code Online (Sandbox Code Playgroud)

该应用程序可以正常工作-包括SSL握手和代理协商-但我必须解决CPU消耗高峰和性能相应下降的问题。我想知道是否有人知道我忽略了一些明显的事情。

编辑:我应该提到我正在为SSL流使用flat_buffer。

我有机会分析“端口之前”和“端口之后”性能数据。这是“端口之前”(即良好的性能)调用链:

- 34.61% HttpRequest::send
   - 32.02% beast::http::write<boost::asio::ssl::stream<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::stream_socket_service<boost::asio::ip::tcp> >&>, true, beast::http::string_body,
      - 31.90% beast::http::write<boost::asio::ssl::stream<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::stream_socket_service<boost::asio::ip::tcp> >&>, true, beast::http::string_bo
         - 20.77% beast::http::detail::write_preparation<true, beast::http::string_body, beast::http::basic_fields<std::allocator<char> > >::init
            - 18.25% beast::http::detail::write_fields<beast::basic_streambuf<std::allocator<char> >, beast::http::basic_fields<std::allocator<char> > >
               - 10.38% beast::write<beast::basic_streambuf<std::allocator<char> >, boost::basic_string_ref<char, std::char_traits<char> > >
                  - 10.20% beast::detail::write_dynabuf<beast::basic_streambuf<std::allocator<char> >, boost::basic_string_ref<char, std::char_traits<char> > >
                     + 3.66% …
Run Code Online (Sandbox Code Playgroud)

c++ performance networking boost beast

3
推荐指数
1
解决办法
554
查看次数

标签 统计

beast ×1

boost ×1

c++ ×1

networking ×1

performance ×1