在不同语言的流程之间高效共享数据

问题描述

上下文

我正在编写一个Java程序,该程序通过标准输入和标准输出与C#程序通信。 C#程序作为子进程启动。它通过stdin获取“请求”,并通过stdout发送“响应”。请求非常轻量(几个字节大小),但是响应很大。在正常运行该程序时,响应量约为2GB数据。

我正在寻找提高性能的方法,而我的测量结果表明向stdout写入内容是一个瓶颈。这是正常运行的数字:

  • 总时间:195秒
  • 通过标准输出传输的数据:2026MB
  • 写至标准输出的时间:85秒
  • 标准输出吞吐量:23.8 MB / s

顺便说一句,我首先将所有字节写到内存缓冲区中,然后将它们一次复制到stdout中,以确保只测量stdout写入时间。

问题

在C#子进程和Java父进程之间共享数据的有效而优雅的方法是什么?显然,stdout是不够的。

我到处都读过关于通过内存映射文件共享内存的信息,但是Java和.NET API给我的印象是我在错误的位置查找。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)