问题描述
上下文
我正在编写一个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 (将#修改为@)