Rel*_*lla 5 c++ sockets boost file boost-asio
所以我试过了:
int buff_length = 8192;
ifstream stream;
char* buffer = new char[buff_length];
stream.open( path.string().c_str(), ios::binary );
boost::system::error_code ignored_error;
while (stream)
{
stream.read(buffer, buff_length);
boost::asio::write(*socket, boost::asio::buffer(buffer, stream.gcount()),
boost::asio::transfer_all(), ignored_error);
}
Run Code Online (Sandbox Code Playgroud)
我想知道你是怎么做到的 - 怎么做得更快?
我的应用程序可以在Windows,Linux和Mac OS上运行.这就是我使用boost的原因.我用它ab来测试.我希望在阅读和发送文件时获得2或至少1.5倍的速度.可能是Boost :: Iostream可以帮我任何方法吗?
如果您尝试优化的是通过套接字从磁盘发送文件,如果您使用的是 Linux,请查看sendfile(2) 。它是专门为此目的而设计的。
如果您想坚持使用更像现在的东西,但要对其进行调整,我会尝试将缓冲区设置为少量兆字节,而不仅仅是 8 KB。