套接字同步发送优于异步开始发送/结束发送
本文关键字:开始 异步 结束 同步 于异步 套接字 | 更新日期: 2023-09-27 18:36:12
我正在编写支持大量(50,000+)连接的tcp服务器,我发现了这一点。
同步发送的执行性能至少是异步发送的 3 倍。除了这两行之外,程序是相同的:
m_socket.Send(sendingBuffer, length, SocketFlags.None);
和
m_socket.BeginSend(sendingBuffer, 0, length, 0, new AsyncCallback(SendCallback), this);
在SendCallback中,我只调用EndSend,没有别的。
这种巨大的性能差异从何而来? 异步方法不是应该表现得更好吗?
异步方法通常比同步方法慢(由于在实现中涉及一些额外的开销),但如果你需要在它们执行时做一些事情,总体上"更快"——如果你只是在等待它们完成,它们是完全不必要的。