Bekerja pada aplikasi berbasis Android dan iOS yang membutuhkan komunikasi dengan server yang berjalan di perangkat yang sama. Saat ini menggunakan koneksi loopback TCP untuk berkomunikasi dengan Aplikasi dan Server (Aplikasi yang ditulis dalam lapisan pengguna, server yang ditulis dalam C ++ menggunakan Android NDK)
Saya bertanya-tanya apakah mengganti komunikasi antar dengan soket Domain Unix akan meningkatkan kinerja?
Atau secara umum adakah bukti / teori yang membuktikan bahwa socket Domain Unix akan memberikan performa yang lebih baik dari koneksi loopback TCP?
Jawaban:
Ya, komunikasi antarproses lokal dengan soket domain unix harus lebih cepat daripada komunikasi dengan koneksi localhost loopback karena Anda memiliki lebih sedikit overhead TCP, lihat di sini .
sumber
Tolok ukur ini: https://github.com/rigtorp/ipc-bench menyediakan tes latensi dan throughput untuk soket TCP, Soket Domain Unix (UDS), dan PIPE.
Pengurangan latensi 66% dan throughput hampir 7X lebih banyak menjelaskan mengapa sebagian besar perangkat lunak yang mengutamakan kinerja memiliki protokol khusus IPC sendiri.
sumber
Tolok ukur Redis menunjukkan soket domain unix dapat menjadi signifikan lebih cepat daripada loopback TCP.
Namun, perbedaan ini hanya penting jika throughput tinggi.
sumber
Soket domain Unix sering kali dua kali lebih cepat dari soket TCP ketika kedua rekan berada di host yang sama. Protokol domain Unix bukanlah rangkaian protokol yang sebenarnya, tetapi cara melakukan komunikasi klien / server pada satu host menggunakan API yang sama yang digunakan untuk klien dan server pada host yang berbeda. Protokol domain Unix adalah alternatif dari metode komunikasi antarproses (IPC).
sumber