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

问题描述:

我有一个C++程序和一个Java程序。在C++方面,我有一个拥有数百万条目的向量。我需要将这些数据传输到我的Java程序。到目前为止,我已经试过如下:在C++和Java之间传输数据的最快方式是什么

  • 创建一个Unix套接字,转化载体为长串(序列化),并通过Unix套接字

  • 创建一个节俭的服务器/客户端模式发送以传输数据

这两种方法工作得很好,但我得到的性能很低。我甚至没有看到它使用完整的网络带宽(在节俭的情况下)。由于我将它序列化为字符串,然后再次将此字符串转换回字符串数组(收到字节[]为字符串和拆分)在Java端是非常昂贵的操作。

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

+0

这两个程序都运行在同一台机器上吗? –

+0

把它变成一个字符串,然后一次发送整个字符串不可能是最快的。直接从Array读取数据块应该是Taster,但您必须以某种方式关心表示数据的性质。如果不知道细节,很难说。 – kratenko

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

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

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