Домен UNIX снабжает сокетом по сравнению с Общей памятью (Отображаемый файл)

Кто-либо может сказать, насколько медленный сокеты домена UNIX, по сравнению с Общей памятью (или альтернативный файл с отображенной памятью)?

Спасибо.

45
задан SyBer 21 January 2010 в 13:16
поделиться

3 ответа

Это больше вопрос дизайна, чем скорость (совместно используемая память быстрее), доменные сокеты определенно Подробнее стиль Unix, и намного меньше проблем. С точки зрения выбора знайте заранее:

Доменные сокеты Преимущества

  • Режим блокировки и безблокировки и переключение между ними
  • Вам не нужно освободить их, когда задачи завершены

Доменные расчетные недостатки

  • Необходимо прочитать и писать в линейной моде

Общие преимущества памяти

  • Нелинейное хранение
  • никогда не будет блокировать
  • Несколько программ могут получить доступ к ней

. Общие недостатки памяти

  • Необходимо заблокировать реализацию
  • Нужно управлять ручным управлением, даже если не используется любой программой

, это все, о чем я могу думать сейчас. Тем не менее, я бы пошел с доменными розетками в любой день - не говоря уже о том, что он намного проще, а затем переосмыслить их делать распределенные вычисления. Скорость усиления общей памяти будет потеряна из-за необходимости безопасного дизайна. Однако, если вы точно знаете, что вы делаете, и используете правильные звонки ядра, вы могут достичь большей скорости с общей памятью.

68
ответ дан 26 November 2019 в 21:16
поделиться

С точки зрения совместной памяти скорости определенно является победителем. С розетками у вас будет по крайней мере два копии данных - от процесса отправки в буфер ядра, затем из ядра до процесса получения. При совместной памяти Задержка будет связана только алгоритмом согласованности кэша между ядрами на коробке.

Как отмечает Kornel, хотя для работы с общей памятью более вовлечена, поскольку вы должны придумать свою собственную схему синхронизации / сигнализации, что может добавить задержку в зависимости от того, какой маршрут. Определенно используйте семафоры в общей памяти (реализованные с помощью Futex на Linux), чтобы избежать системных вызовов в необъявленном случае.

12
ответ дан 26 November 2019 в 21:16
поделиться

Оба являются механизмами связи между процессом (IPC). Разъемы доменов Unix являются использование для связи между процессами на одном хосте, аналогичном, поскольку между разными хостами используется TCP-розетки. Общая память (SHM) - это память, в которой вы можете поставить данные и поделиться этим между процессами. SHM предоставляет вам произвольный доступ с использованием указателей, розетки можно записать или прочитать, но вы не можете перемотать или делать позиционирование.

4
ответ дан 26 November 2019 в 21:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: