我正在编写支持大量(50,000+)连接的tcp服务器,我发现了这一点。
同步发送至少比异步发送的次数高3倍。除了这两行之外,这些程序是相同的:
m_socket.Send(sendingBuffer, length, SocketFlags.None);
和
m_socket.BeginSend(sendingBuffer, 0, length, 0, new AsyncCallback(SendCallback), this);
在SendCallback中,我只是调用EndSend,没有别的。
这种巨大的性能差异来自哪里?是不是异步方法应该表现更好?
答案 0 :(得分:3)
异步方法通常慢然后是同步方法(由于涉及实现中的一些额外开销),但如果您需要执行而它们,则整体“更快”正在执行 - 如果你只是等待他们完成,他们完全没必要。