Network programming 本地主机与局域网:速度差异?

Network programming 本地主机与局域网:速度差异?,network-programming,Network Programming,我目前正在进行性能分析。我们有一个基本的客户机/服务器应用程序。如果我在同一台计算机(本地主机)上运行客户端/服务器,与在局域网上跨两台计算机运行客户端/服务器,TCP传输速度会有所不同吗?这取决于应用程序的功能 例如: 如果它将10GB文件从客户端传输到服务器,那么是的,这将产生不同。是的,通过网络发送文件的延迟肯定会降低程序的速度。吞吐量不会增加,但如果您在发送数据之前等待回复,那么这会因为额外的延迟而增加。我不知道它是否可以测量(这也取决于您的局域网速度),但从逻辑角度来看,当然有区别。L

我目前正在进行性能分析。我们有一个基本的客户机/服务器应用程序。如果我在同一台计算机(本地主机)上运行客户端/服务器,与在局域网上跨两台计算机运行客户端/服务器,TCP传输速度会有所不同吗?

这取决于应用程序的功能

例如:
如果它将10GB文件从客户端传输到服务器,那么是的,这将产生不同。

是的,通过网络发送文件的延迟肯定会降低程序的速度。吞吐量不会增加,但如果您在发送数据之前等待回复,那么这会因为额外的延迟而增加。

我不知道它是否可以测量(这也取决于您的局域网速度),但从逻辑角度来看,当然有区别。Localhost始终是最快的,因为数据没有通过其他介质(如空气或铜线)发送


但这取决于您的应用程序所做的工作,这可能有问题,也可能没有问题。

TCP传输速度将非常快!因为若你们在同一台计算机上运行它,它将在本地转发数据包,甚至不需要接触LAN和网络适配器


但是,在不同的计算机上,客户端+服务器的总体速度可能会更好,尤其是如果您不经常与服务器通信。

使用本地主机时,由于内存、磁盘、cpu等原因,本地资源更有可能成为性能瓶颈。使用两台计算机时,由于延迟、带宽、吞吐量、数据包丢失等原因,网络更有可能成为瓶颈


这取决于应用程序的功能以及它如何使用网络、客户端和服务器。

如果客户端和服务器在同一台机器上,传输时间几乎肯定会更快。这实际上可能与整个程序的性能无关,这取决于客户端和服务器消耗的其他资源。

我只是在一个工作项目中遇到了这个问题。将UDP与localhost结合使用至少比通过网络连接快一个数量级(可能是两个数量级),我相信,与localhost相比,网络端口的MTU上限通常为1500

一个未经证实的怀疑是,PC机上的内置网络端口的质量并不完全相同,因此即使它们声称是千兆位,您也可能无法真正做到这么快。但它也可能会进行大量的Windows系统调用(每个数据包一个操作系统调用),这可能是一个巨大的开销。有了TCP,我可以在一次调用中向操作系统发送大量数据。使用UDP时,我必须一次给它一个数据包,受MTU大小的限制,导致操作系统调用的数量要多得多。但尚未证实


还没有尝试过Linux。

对于localhost,我的ping时间为0.024ms,对于ping我的路由器,我的ping时间为0.339mslndcora,这实际上是一个很好的答案。“如果你在等待答复”。。。当你在skype上与某人交谈时,就会发生这种情况。由于延迟了几毫秒,整个对话都变慢了。是的,如果你想一想0.024和0.339之间的差异是巨大的,根据这些计时,localhost大约比LAN快15倍。@Andrey:这不一定是真的。如果应用程序要求使用网络层进行传输,则本地连接仍然使用环回通过适配器。