gpt4 book ai didi

windows - socket 乒乓性能

转载 作者:可可西里 更新时间:2023-11-01 14:15:44 32 4
gpt4 key购买 nike

我写了两个简单的程序(在 C++ 和 C# 中试过)。

这是伪代码:

-------- 客户端----------------

for(int i = 0; i < 200.000; i++)  
{
socket_send("ping")
socket_receive(buff)
}

------------ 服务器------------

while(1)  
{
socket_receive(buff)
socket_send("pong")
}

我在 Windows 上试过了。

客户端的执行时间约为45秒。有人能解释一下为什么这需要这么长时间吗?我知道如果客户端和服务器之间存在真正的网络连接,那么一个“乒乓球”的时间将是:generate_ping + send_via_network + generate_pong + send_via_network但这里的一切都是在“本地”模式下完成的。

有什么方法可以使用网络套接字使这个进程间乒乓球更快(例如,我不是在问共享内存:))

最佳答案

这可能是 nagle 问题吗?您发送非常小的数据包,然后立即等待响应。 TCP 堆栈会暂时保留数据,直到确定您不会再发送任何数据为止。设置 TCP_NODELAY 选项可能会使其更快。

虽然这个假设让我感到困惑的是为什么没有其他人看到它以及为什么在 linux 上看不到相同的效果(我对此几乎一无所知)。我确实知道 Windows 上的 TCP 堆栈通常几乎肯定不会比 Linux 上的堆栈慢 9 倍 - 有人会注意到。

关于windows - socket 乒乓性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2835138/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com