Localhost在Windows上表现更好吗?

时间:2010-09-06 22:27:35

标签: c# .net sockets networking

我有一个.NET 3.5服务器应用程序,通常有大约8个客户端。我正在使用System.Net.Sockets进行所有联网。

我被告知如果客户端在同一个盒子上运行,它应该使用localhost:<port>127.0.0.1:<port>而不是机器的ip或名称来获得更好的性能。有几个人在说这会跳过tcp堆栈的某些层。

但是我无法在测试中看到任何性能差异(使用System.Diagnostics.Stopwatch计算从服务器到客户端获取ping数据包所需的时间)。

理论上应该有更好的表现吗?

2 个答案:

答案 0 :(得分:5)

,两种情况下的表现相同。如果您使用的是本地设备IP地址,那么您的操作系统内核不会将您的数据包数据传输到您的网络设备,并且这些数据不会在任何地方发送,那么您就没有任何ISO层计算(封装,解封装等) )。

我相信操作系统会看到这是一个本地设备,你会把它视为127.0.0.1。所以事实上两者都会产生同样的效果。

答案 1 :(得分:1)

我认为在使用127.0.0.1时可能会有极其微小的性能提升(虽然我对此表示怀疑),但是对于8个客户端,你永远不会注意到它。这种性能差异必须在很多流量上汇总才能变得非常明显。

从维护角度来看,更大的问题是哪个值更好。如果应用程序始终在localhost中查找外部依赖项,那么如果在另一台主机上运行它将无法正常运行。但如果它正在为这些依赖关系寻找一个更普遍理解的地址,它将从网络上的任何地方找到它们。