2016-01-03 2 views
1

Мне было интересно, как буферизация потока в Java влияет на производительность сетевых подключений (или дескрипторов сокетов на уровне ОС). Я понимаю, что буферизация файловых дескрипторов снижает издержки на доступ к диску, но как насчет сетевых подключений?Уровень эффективности буферизации для ручек сокетов (сети)

Каждый считываемый (предположим, один байт за раз) из таких входных потоков вызывает базовое соединение re-xxx?

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

В принципе, я пытаюсь понять стоимость/накладные расходы на использование обычных потоков при доступе к сети в частности.

Thx

ответ

1

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

Однако память, скажем, 8 КБ или 32 КБ или даже 1 МБ стоит очень мало. то есть время, когда вам нужно решить, нужен ли вам буфер, скорее всего, будет стоить гораздо больше, если у вас не будет очень большого количества подключений, т. е.> 10K.

 Смежные вопросы

  • Нет связанных вопросов^_^