我使用 boost::asio 和异步方法开发了一个 TCP 网络应用程序。该应用程序通过以下方式发送大约 1GB 的数据:
- 发送一个 5 字节的命令(使用 async_write())
- 发送一个 1024 字节的数据(使用另一个 async_write())
- 重复直到发送完所有 1GB 数据
当我使用同步方法时,性能是预期的(使用 1Gb 以太网发送 1GB 数据大约需要 9 秒),但是当我使用异步调用时,性能会下降,并且需要 20 秒来发送相同数量的数据。
我试图停用 Nagle 的算法,但它并没有解决问题。
您知道对少量数据使用多个 async_write() 调用是否会对性能产生负面影响?
谢谢!