Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sockets 插座与管道的性能 我有一个java程序,它与C++程序在本地主机上使用套接字通信。通过使用本机操作系统管道,我可以期望获得任何性能(延迟、带宽或两者)?目前我主要对Windows感兴趣,但也欢迎任何与Unix/Linux/OSX相关的见解_Sockets_Pipe_Named Pipes - Fatal编程技术网

Sockets 插座与管道的性能 我有一个java程序,它与C++程序在本地主机上使用套接字通信。通过使用本机操作系统管道,我可以期望获得任何性能(延迟、带宽或两者)?目前我主要对Windows感兴趣,但也欢迎任何与Unix/Linux/OSX相关的见解

Sockets 插座与管道的性能 我有一个java程序,它与C++程序在本地主机上使用套接字通信。通过使用本机操作系统管道,我可以期望获得任何性能(延迟、带宽或两者)?目前我主要对Windows感兴趣,但也欢迎任何与Unix/Linux/OSX相关的见解,sockets,pipe,named-pipes,Sockets,Pipe,Named Pipes,编辑:澄清:两个程序运行在同一主机上,当前通过套接字通信,即通过与本地主机建立TCP/IP连接:。我的问题是,切换到使用(本地)命名管道(Windows)或其Unix等价物(AF_Unix域套接字?)的潜在性能优势是什么。第一次出现了google hit,它记录了NT4和XP,发现命名管道(这就是你的意思,对吧?)在Windows上更快。Ken是对的。命名管道在Windows上的速度肯定更快。在UNIX和Linux上,您可能需要UDS或本地管道。相同的东西,不同的名字 对于本地通信来说,套接字以

编辑:澄清:两个程序运行在同一主机上,当前通过套接字通信,即通过与本地主机建立TCP/IP连接:。我的问题是,切换到使用(本地)命名管道(Windows)或其Unix等价物(AF_Unix域套接字?)的潜在性能优势是什么。

第一次出现了google hit,它记录了NT4和XP,发现命名管道(这就是你的意思,对吧?)在Windows上更快。

Ken是对的。命名管道在Windows上的速度肯定更快。在UNIX和Linux上,您可能需要UDS或本地管道。相同的东西,不同的名字


对于本地通信来说,套接字以外的任何东西都会更快。这包括内存映射文件、本地管道、共享内存、COM等。

对于本地进程,通信管道肯定比套接字快。有一个问题


我认为尽管socket很灵活,但它也会导致糟糕的代码设计。在使用管道时,它强制您设计项目的体系结构,比如哪个流程应该是父流程,哪个流程应该是子流程,以及它们如何合作(这将决定管道是如何建立的),并为流程分配不同的功能。以这种方式进行的项目设计将具有层次结构,并且易于维护。

我非常确定Unix域套接字与命名管道(Linux上确实存在,而且可能存在于所有现代Unix上)不同。哦,我刚刚意识到,您的意思可能是两者都可以接受,并且只有“本地管道”是“命名管道”的同义词。我从来没有听说过(这个页面现在是谷歌上“linux本地管道”的第3页)。是的,我不是很清楚。我没有提及苹果公司的“socket”,但还是让人感到困惑谢谢你碰巧没有(或不知道)或任何基准测试?顺便问一下:延迟与带宽的对比如何。通信模式通常是大量来回发送的小消息,因此低延迟可能比高带宽更重要。我感到困惑。页面上的数字似乎表明命名管道比套接字慢,但可能我读错了数字。@JesperE再次检查,进行套接字测试的机器的规格比用于管道测试的机器的规格高出10:1以上,并且在管道测试台上,nic被最大化,因此,考虑到这一点,管道肯定会更快。(但这是一种非常糟糕的imo基准测试方法)这个基准测试的设计方式非常奇怪:作者使用了两对完全不同代的计算机,使用不同的网络技术,并仅在一对机器上测试每种技术。然后,他猜测,如果这两种技术具有相同的性能特征,差距应该是多少。他似乎也没有被这样一个事实所困扰,即他得到的结果之一比所讨论的网络技术的理论极限高出两个数量级。如果IPC真的是一个瓶颈,那么使用JNI并在同一进程中运行它怎么样?函数调用可能比任何IPC都快。原因有几个。JVM稳定性可能是最重要的。外部代码需要能够加载不同质量的第三方DLL,我不希望这些DLL在崩溃时能够关闭JVM。不必构建和链接JVM库也是一个巨大的胜利。