Кто-либо может сказать, насколько медленный сокеты домена UNIX, по сравнению с Общей памятью (или альтернативный файл с отображенной памятью)?
Спасибо.
Это больше вопрос дизайна, чем скорость (совместно используемая память быстрее), доменные сокеты определенно Подробнее стиль Unix, и намного меньше проблем. С точки зрения выбора знайте заранее:
Доменные сокеты Преимущества
Доменные расчетные недостатки
Общие преимущества памяти
. Общие недостатки памяти
, это все, о чем я могу думать сейчас. Тем не менее, я бы пошел с доменными розетками в любой день - не говоря уже о том, что он намного проще, а затем переосмыслить их делать распределенные вычисления. Скорость усиления общей памяти будет потеряна из-за необходимости безопасного дизайна. Однако, если вы точно знаете, что вы делаете, и используете правильные звонки ядра, вы могут достичь большей скорости с общей памятью.
С точки зрения совместной памяти скорости определенно является победителем. С розетками у вас будет по крайней мере два копии данных - от процесса отправки в буфер ядра, затем из ядра до процесса получения. При совместной памяти Задержка будет связана только алгоритмом согласованности кэша между ядрами на коробке.
Как отмечает Kornel, хотя для работы с общей памятью более вовлечена, поскольку вы должны придумать свою собственную схему синхронизации / сигнализации, что может добавить задержку в зависимости от того, какой маршрут. Определенно используйте семафоры в общей памяти (реализованные с помощью Futex на Linux), чтобы избежать системных вызовов в необъявленном случае.
Оба являются механизмами связи между процессом (IPC). Разъемы доменов Unix являются использование для связи между процессами на одном хосте, аналогичном, поскольку между разными хостами используется TCP-розетки. Общая память (SHM) - это память, в которой вы можете поставить данные и поделиться этим между процессами. SHM предоставляет вам произвольный доступ с использованием указателей, розетки можно записать или прочитать, но вы не можете перемотать или делать позиционирование.