LINUX.ORG.RU

Производительность IPC


0

0

Господа Linux-программисты. Что на локальной системе работает быстрее: именованые каналы или сокеты? Рассматривается модель 1 сервер <==> 1 клиент.

anonymous

Если верить Уильям Стивенс "Unix Взаимодействие процесоов", то канал быстрее. Правда тестировалось для Solaris 2.6 и DUnix 4.0В. Как в Linux не знаю.

karak
()

Протестируй сам, по отношению к своей конкретной задаче, на конкретной версии ядра (и даже, возможно, конкретной файловой системе -- пайп-то придется на диске искать!).

Die-Hard ★★★★★
()

> 1 сервер <==> 1 клиент.

клиент-серверное приложение на пайпах в пределах локалхоста? это возможно? правда я мож че не знаю...

vilfred ☆☆
()

> 1 сервер <==> 1 клиент.

Программный канал - однозначно. Хотя все зависит от задачи. Если клиент и сервер не "родственники", то именованные каналы.

r_asian ★☆☆
()
Ответ на: комментарий от r_asian

r_asian (29.09.2005 20:36:35):

> Программный канал - однозначно. ... Если клиент и сервер не "родственники", то именованные каналы.

"Вызывающе неверная информация" :-)

> ...все зависит от задачи.

Золотые слова!

P.S. Сокеты иногда _очень_ соптимизированны!

Die-Hard ★★★★★
()
Ответ на: комментарий от Die-Hard

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

P.S. А вообще, даже на моей памяти эта тема уже обсуждалась.

r_asian ★☆☆
()
Ответ на: комментарий от Die-Hard

согласен с Die-Hard, все зависит от _конкретной_ задачи.

pipe может быть быстрее потому, что он проще, данные
"расположены" локальнее.

socket может быть быстрее потому, что больше буфер
(что, опять-таки, может также быть и причиной потери
производительности). кроме того, на SMP машине читать
и писать в socket можно одновременно, а pipe позволяет
работать с ним только одному процессу (хотя это -
особенность реализации в linux).

idle ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.