在C ++和Java之间传输数据的最快方法是什么

时间:2016-03-08 11:09:06

标签: java c++ sockets unix-socket

我有一个C ++程序和一个Java程序。在C ++方面,我有一个包含数百万条目的向量。我需要将这些数据传输到我的Java程序。到目前为止,我尝试了以下内容:

  • 创建了一个unix套接字,将向量转换为长字符串(Serialized)并通过unix套接字发送

  • 创建了一个thrift服务器/客户端模型来传输数据

这两种方法都运作良好,但我得到的表现非常低。我甚至没有使用完整的网络带宽(在节俭的情况下)。

同样使用unix套接字方法,因为我将它序列化为String然后再将该字符串转换回字符串数组(在Java端接收byte []到String并拆分)是非常昂贵的操作。

将数据从C ++世界更快地传输到Java世界的最佳方法是什么?重建/序列化对象的开销较小?

1 个答案:

答案 0 :(得分:2)

如果两个问题都在同一台机器上,我会使用共享内存映射文件。

这样,如果值为int,long或double值,两个程序都可以以完全内存速度访问数据而无需序列化/反序列化。

您可以将文件放在tmpfs或ram驱动器上以避免撞到硬盘。