TCPソケットを介してC / C ++で開発された「サーバー」に接続するJavaアプリがあります。
アプリとサーバーの両方が同じマシン、Solarisボックスで実行されています(ただし、最終的にはLinuxへの移行を検討しています)。交換されるデータの種類は単純なメッセージです(ログイン、ログインACK、クライアントは何かを要求し、サーバーは応答します)。各メッセージの長さは約300バイトです。
現在はソケットを使用しており、すべて問題ありませんが、IPCメソッドを使用してデータを交換する(レイテンシを短縮する)より高速な方法を探しています。
私はネットを調査していて、次のテクノロジーへの参照を思いつきました:
- 共有メモリ
- パイプ
- キュー
- DMA(Direct Memory Access)と呼ばれるもの
しかし、私はそれぞれのパフォーマンスの適切な分析を見つけることができませんでした。JAVAとC / C ++の両方でそれらを実装する方法も(彼らが互いに通信できるように)できませんでした。
このコンテキストでの各メソッドのパフォーマンスと実現可能性について誰かがコメントできますか?有用な実装情報へのポインタ/リンクはありますか?
編集/更新
ここで得たコメントと回答に続いて、パイプのすぐ上に構築されているように見えるUnixドメインソケットに関する情報を見つけ、TCPスタック全体を節約しました。これはプラットフォーム固有なので、JNIまたはjudsかjunixsocketのいずれかでテストする予定です。
次に考えられる手順は、パイプの直接実装、次に共有メモリですが、複雑さのレベルがさらに高いという警告を受けています...
ご協力いただきありがとうございます