localhost по сравнению с LAN: различие в скорости?

Я в настоящее время нахожусь в процессе профилирования производительности. У нас есть основное клиент-серверное приложение. Скорость передачи TCP отличалась бы, если бы я выполнил клиент/сервер на той же машине (localhost) по сравнению с через два компьютера на LAN?

8
задан sivabudh 2 March 2010 в 17:51
поделиться

7 ответов

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

Но общая скорость клиент+сервер может быть лучше на разных машинах, особенно если вы не слишком часто общаетесь с сервером.

7
ответ дан 5 December 2019 в 12:57
поделиться

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

3
ответ дан 5 December 2019 в 12:57
поделиться

При использовании localhost локальные ресурсы с большей вероятностью будут узким местом производительности из-за памяти, диска, процессора и т. Д. При использовании двух компьютеров более вероятно сеть будет узким местом из-за задержки, пропускной способности, потери пакетов и т. д.

Это зависит от того, что делает ваше приложение и как оно использует сеть, клиента и сервер.

2
ответ дан 5 December 2019 в 12:57
поделиться

Это действительно зависит от того, что делает ваше приложение ....

В качестве примера: Если оно передает файлы размером 10 ГБ от клиента к server, тогда да, это будет иметь значение.

-1
ответ дан 5 December 2019 в 12:57
поделиться

Я не знаю, можно ли это измерить (это также зависит от скорости вашей локальной сети), но с логической точки зрения, конечно, разница есть. Localhost всегда будет самым быстрым, поскольку данные не передаются через другую среду (например, воздух или медный провод).

Но в зависимости от того, что делает ваше приложение, это может иметь или не иметь значения.

0
ответ дан 5 December 2019 в 12:57
поделиться

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

0
ответ дан 5 December 2019 в 12:57
поделиться

Я только что столкнулся с этой проблемой в проекте на работе. Использование UDP с локальным хостом как минимум на порядок быстрее, чем через сетевое соединение (может быть, на два порядка), и я считаю, что для локального хоста нет потолка MTU в 1500, который обычно существует для сетевых портов.

Одно неподтвержденное подозрение заключается в том, что встроенные сетевые порты на ПК не все одинакового качества, поэтому, даже если они заявлены как гигабитные, вы не сможете работать так быстро. Но это также может быть большое количество системных вызовов Windows (один вызов ОС на пакет), что может привести к значительным накладным расходам. С TCP я могу передать ОС большой кусок данных для записи за один вызов. С UDP я должен передавать ему пакет за раз, ограниченный размером MTU, что приводит к гораздо большему количеству вызовов ОС. Но пока не подтверждено.

Linux еще не пробовал.

2
ответ дан 5 December 2019 в 12:57
поделиться
Другие вопросы по тегам:

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