我目前正在进行性能分析。我们有一个基本的客户/服务器应用程序如果我在同一台计算机(localhost)上运行客户端/服务器而不是在LAN上的两台计算机上运行TCP传输速度会不同?
答案 0 :(得分:6)
TCP传输速度将是!因为如果你在同一台计算机上运行它,它将在本地转发数据包,甚至不用触摸LAN和网络适配器。
但客户端+服务器的整体速度在不同的机器上可能会更好,特别是如果您不经常与服务器通信。
答案 1 :(得分:3)
肯定的是,通过网络发送它的延迟会降低程序的速度。吞吐量不会,但如果您在发送数据之前等待回复,那么这会因为额外的延迟而增加。
答案 2 :(得分:2)
我刚刚在工作项目上遇到了这个问题。将UDP与localhost一起使用至少比网络连接快一个数量级(可能是两个数量级),我相信对于localhost,网络端口通常不存在1500的MTU上限。
一个未经证实的怀疑是PC上的内置网络端口的质量并不完全相同,所以即使它们声称是千兆位,也可能无法真正实现这一目标。但它也可能是许多Windows系统调用(每个数据包一个OS调用)可能是一个重大的开销。使用TCP,我可以将一大块数据交给操作系统,以便在一次调用中写入。使用UDP,我必须一次传送一个数据包,受MTU大小的限制,导致更多的OS调用。但尚未证实。
尚未尝试过Linux。
答案 3 :(得分:1)
使用localhost时,由于内存,磁盘,CPU等原因,本地资源更可能成为性能瓶颈。使用两台计算机时,由于延迟,带宽,吞吐量,数据包,网络更可能成为瓶颈损失等。
这取决于您的应用程序的功能以及它如何使用网络,客户端和服务器。
答案 4 :(得分:0)
我不知道它是否可衡量(这也取决于你的局域网的速度),但从逻辑的角度来看,当然存在差异。 Localhost总是最快的,因为数据没有通过其他介质(如空气或铜线)发送。
但是,根据您的应用程序的作用,这可能会或可能不重要。
答案 5 :(得分:0)
如果客户端和服务器在同一台机器上,传输时间几乎肯定会更快。根据客户端和服务器消耗的其他资源,这可能对整个程序的性能无关紧要。
答案 6 :(得分:-1)
这实际上取决于你的应用程序做了什么......
举个例子: 如果它将10GB文件从客户端传输到服务器,那么是的,它会产生影响。