2016-03-08 67 views
0

我有一個C++程序和一個Java程序。在C++方面,我有一個擁有數百萬條目的向量。我需要將這些數據傳輸到我的Java程序。到目前爲止,我已經試過如下:在C++和Java之間傳輸數據的最快方式是什麼

  • 創建一個Unix套接字,轉化載體爲長串(序列化),並通過Unix套接字

  • 創建一個節儉的服務器/客戶端模式發送以傳輸數據

這兩種方法工作得很好,但我得到的性能很低。我甚至沒有看到它使用完整的網絡帶寬(在節儉的情況下)。由於我將它序列化爲字符串,然後再次將此字符串轉換回字符串數組(收到字節[]爲字符串和拆分)在Java端是非常昂貴的操作。

什麼是更快地從C​​ ++世界較小的開銷上重建/序列化對象將數據傳輸到Java世界的最佳途徑?

+0

這兩個程序都運行在同一臺機器上嗎? –

+0

把它變成一個字符串,然後一次發送整個字符串不可能是最快的。直接從Array讀取數據塊應該是Taster,但您必須以某種方式關心表示數據的性質。如果不知道細節,很難說。 – kratenko

回答

2

如果兩個問題都在同一臺機器上,我會使用共享內存映射文件。

這樣兩個程序可以在全內存速度訪問數據,而無需序列化/反序列化ESP如果值的int,long或double值。

您可以將文件放在tmpfs或ram驅動器上以避免撞擊硬盤。

相關問題