2010-03-02 158 views
5

我目前正在进行性能分析。我们有一个基本的客户/服务器应用程序如果我在同一台计算机(本地主机)上运行客户机/服务器而不是在局域网上的两台计算机上运行客户机/本地主机与局域网:速度差异?

回答

6

TCP传输速度会!因为如果你在同一台计算机上运行它,它将本地转发数据包,甚至不需要触及LAN和网络适配器。

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

+0

@Andrey:这不一定是真的。如果应用程序指示它使用网络层进行传输,则本地连接仍使用回送通过适配器传递。 – 2010-03-02 18:09:05

+2

请解释应用程序如何指示使用网络? – Andrey 2010-03-02 18:12:10

-1

这完全取决于你的应用程序做什么....

为例: 如果从客户端传输10GB的文件服务器,那么,它会有所作为。

3

是的,通过网络发送它的延迟会降低程序的速度。吞吐量不会,但如果您在发送数据之前等待回复,则会由于额外的延迟而建立起来。

+0

对于本地主机,我得到0.024ms的ping时间,用于ping我的路由器,我得到0.339ms的时间 – Earlz 2010-03-02 18:02:47

+0

LnDCobra,这实际上是一个很好的答案。 “如果你在等待回复”......当你与Skype上的某个人聊天时会发生这种情况。由于几毫秒的延迟,整个对话速度变慢。 – 2010-03-02 18:12:11

+0

是的,如果你认为0.024和0.339之间的差异很大,根据这些时间localhost比LAN快15倍。 – 2010-03-02 18:43:06

0

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

但取决于您的应用程序的作用,这可能或可能不重要。

1

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

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

0

如果客户端和服务器在同一台计算机上,传输时间几乎肯定会更快。根据客户端和服务器消耗的其他资源,这对于整个程序的性能而言可能并不重要。

2

我刚刚在一个项目上遇到了这个问题。与localhost一起使用UDP至少比网络连接快一个数量级(可能两个数量级),并且我相信在本地主机上,网络端口通常不存在1500的MTU上限。

一个未经证实的怀疑是PC上内置的网络端口并不都是相同的质量,所以即使他们声称是千兆位,也可能无法真正走得这么快。但它也可能导致大量的Windows系统调用(每个数据包有一个操作系统调用)可能是一个很大的开销。通过TCP,我可以在一次调用中向操作系统传递大量数据。使用UDP时,我必须一次将它传递给一个数据包,受到MTU大小的限制,从而导致大量的OS调用。但尚未证实。

还没有尝试过Linux。