我们一直在分析和分析我们的应用程序以尽可能减少延迟。我们的应用程序由 3 个独立的 Java 进程组成,它们都运行在同一台服务器上,它们通过 TCP/IP 套接字相互传递消息。
我们已将第一个组件的处理时间减少到 25 μs,但我们看到 TCP/IP 套接字写入(在 localhost 上)到下一个组件总是需要大约 50 μs。我们看到另一种异常行为,即接受连接的组件可以更快地写入(即 < 50 μs)。目前,所有组件的运行时间均小于 100 μs,套接字通信除外。
不是 TCP/IP 专家,我不知道可以做些什么来加快速度。Unix 域套接字会更快吗?内存映射文件?还有哪些其他机制可能是将数据从一个 Java 进程传递到另一个进程的更快方法?
2011 年 6 月 21 日更新 我们创建了 2 个基准测试应用程序,一个使用 Java,一个使用 C++ 来更严格地对 TCP/IP 进行基准测试并进行比较。Java 应用程序使用 NIO(阻塞模式),而 C++ 使用 Boost ASIO tcp 库。结果或多或少相当,C++ 应用程序比 Java 快约 4 μs(但在其中一项测试中,Java 击败了 C++)。此外,两个版本在每条消息的时间上都显示出很大的变化。
我认为我们同意共享内存实现将是最快的基本结论。(尽管我们也想评估 Informatica 产品,但前提是它符合预算。)