ฉันมีแอป Java ที่เชื่อมต่อผ่านซ็อกเก็ต TCP ไปยัง "เซิร์ฟเวอร์" ที่พัฒนาใน C / C ++
ทั้งแอพและเซิร์ฟเวอร์ทำงานบนเครื่องเดียวกันกล่อง Solaris (แต่เรากำลังพิจารณาที่จะย้ายไปยัง Linux ในที่สุด) ประเภทของข้อมูลที่แลกเปลี่ยนคือข้อความธรรมดา (ล็อกอินเข้าสู่ระบบ ACK จากนั้นไคลเอนต์ขอบางสิ่งบางอย่างการตอบกลับของเซิร์ฟเวอร์) แต่ละข้อความมีความยาวประมาณ 300 ไบต์
ขณะนี้เราใช้ Sockets และทุกอย่างก็โอเคอย่างไรก็ตามฉันกำลังมองหาวิธีที่เร็วกว่าในการแลกเปลี่ยนข้อมูล (เวลาแฝงที่ต่ำกว่า) โดยใช้วิธี IPC
ฉันได้ทำการค้นคว้าทางเน็ตและได้ทำการอ้างอิงถึงเทคโนโลยีต่อไปนี้:
- หน่วยความจำที่ใช้ร่วมกัน
- ท่อ
- คิว
- รวมทั้งสิ่งที่เรียกว่า DMA (Direct Memory Access)
แต่ฉันไม่พบการวิเคราะห์ที่เหมาะสมของการแสดงตามลำดับทั้งวิธีการใช้งานทั้งใน JAVA และ C / C ++ (เพื่อให้พวกเขาสามารถพูดคุยกันได้) ยกเว้นท่อที่ฉันสามารถจินตนาการได้ว่าจะทำอย่างไร
ใครสามารถแสดงความคิดเห็นเกี่ยวกับประสิทธิภาพและความเป็นไปได้ของแต่ละวิธีในบริบทนี้ ตัวชี้ / ลิงก์ไปยังข้อมูลการใช้งานที่เป็นประโยชน์หรือไม่
แก้ไข / อัปเดต
ตามความคิดเห็นและคำตอบที่ฉันได้มาที่นี่ฉันพบข้อมูลเกี่ยวกับ Unix Domain Sockets ซึ่งดูเหมือนจะสร้างขึ้นบนท่อและจะช่วยฉันทั้งสแต็ก TCP ทั้งหมด มันเฉพาะแพลตฟอร์มดังนั้นผมวางแผนที่จะทดสอบกับ JNI หรืออย่างใดอย่างหนึ่งjudsหรือjunixsocket
ขั้นตอนต่อไปที่เป็นไปได้คือการใช้งานไปป์โดยตรงจากนั้นแชร์หน่วยความจำแม้ว่าฉันจะได้รับคำเตือนถึงระดับความซับซ้อนเพิ่มเติม ...
ขอบคุณสำหรับความช่วยเหลือของคุณ