【问题标题】:Does Localhost perform better on windows?本地主机在 Windows 上的性能更好吗?
【发布时间】:2010-09-06 22:27:34
【问题描述】:

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

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

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

理论上真的应该有更好的性能吗?

【问题讨论】:

标签: c# .net sockets networking


【解决方案1】:

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

我相信操作系统会看到这是一个本地设备,而您将其视为127.0.0.1。所以实际上两者的效果是一样的。

【讨论】:

  • 添加到这个回复中,我相信操作系统会看到这是一个本地设备,而您将其视为 127.0.0.1。所以实际上两者都会产生相同的效果
【解决方案2】:

我认为使用 127.0.0.1 可能会有非常微小的性能提升(尽管我对此表示怀疑),但如果有 8 个客户端,您将永远不会注意到它。这种性能差异必须在大量流量上汇总才能变得明显。

更大的问题是从维护的角度来看哪个值更好。如果应用程序总是在本地主机上查找外部依赖项,那么如果在另一台主机上运行它就不会做得很好。但如果它正在为这些依赖项寻找更普遍理解的地址,它会从网络上的任何地方找到它们。

【讨论】:

    猜你喜欢
    • 2014-08-11
    • 2011-01-03
    • 2015-10-12
    • 1970-01-01
    • 2014-10-01
    • 1970-01-01
    • 2014-08-08
    • 2010-12-07
    • 2010-09-24
    相关资源
    最近更新 更多