【发布时间】:2010-12-11 07:39:08
【问题描述】:
与 Windows 和 Linux 上的命名管道和其他方法相比,在执行 IPC 时使用套接字的效率如何?
现在,我在 4 个独立的盒子上有 4 个独立的应用程序需要通信。其中两个是在 Windows Server 2003 R2 上运行的 .NET 3.5 应用程序。两个是 Linux(Suse Linux 10)。它们通常不受 CPU 限制。流量不是很大,但低延迟非常重要。我们现在使用的是禁用了 nagle 并在 linux 机器上安装了 sles10 慢启动补丁的套接字。
您认为我们只需在同一个 windows 机器上运行两个 windows 应用程序和在同一个 linux 机器上运行两个 linux 应用程序并且不进行任何代码更改(即仍然使用套接字),我们会获得多少速度提升。
操作系统是否会意识到端点位于同一台机器上并且知道不与数据包一起进入以太网?他们的数据包是否还必须通过整个网络堆栈?如果我们花时间更改为命名管道或内存映射文件或其他东西会快多少?
【问题讨论】:
-
这很容易测试。测试一下。
-
+1,jeffamaphone:这里没有含糊的 cmets 或轶事证据很重要。重要的是 Michael 的 程序的行为方式。
-
同意,我应该测试一下。鉴于网络、设置等方面的所有差异,这是唯一确定的方法。但我只是希望有人能与已经做过非常相似测试的人建立链接。我无法想象严格比较这些东西的性能是一个新想法——可能比我更了解网络的人已经做过 100 次了。
-
我没有可用的数据了,所以你必须相信我的话。但是 Linux 上的 Unix Domain 套接字比 TCP over loopback 快得多。
标签: c# linux networking sockets tcp