【发布时间】:2010-12-25 08:52:06
【问题描述】:
我有一个 Java 程序,它使用本地主机上的套接字与 C++ 程序通信。通过使用本机操作系统管道,我能否期望获得任何性能(延迟、带宽或两者兼而有之)?我目前主要对 Windows 感兴趣,但也欢迎任何与 Unix/Linux/OSX 相关的见解。
编辑:澄清:两个程序在同一主机上运行,当前通过套接字进行通信,即通过 TCP/IP 连接到 localhost:。我的问题是切换到使用(本地)命名管道(Windows)或它们的 Unix 等效项(AF_UNIX 域套接字?)的潜在性能优势是什么。
【问题讨论】:
-
如果IPC真的是瓶颈,那么使用JNI并在同一个进程中运行呢?函数调用可能比任何 IPC 都快。
-
有几个原因。 JVM 稳定性可能是最重要的。外部代码需要能够加载不同质量的 3rd-party DLL,我不希望它们在崩溃时能够关闭 JVM。不必构建和链接 JVM 库也是一大胜利。
标签: sockets pipe named-pipes