Редакция 3. Отправка сжатого блока
В этой версии приложения используется сжатый блок отправки данных. Это изменение приводит к значительному повышению производительности.
BYTE tmp[3*ROWS*COLS];
FIELD Old = Map;
ComputeNext( Map );
n=Compact(Map,Old,tmp);
bind( s, ... );
connect( s, ... );
send( s, tmp, 3*n );
//can't do recv(s,tmp,n)
for(int i=0; i < n; )
recv( s, tmp+i, n-i );
closesocket( s );
Изменения в этой версии
Эта версия отражает следующие изменения:
- Обновления ячеек больше не сериализуются.
- Так как используется блок отправки, приложение больше не является чатным.
- Используется сжатие данных, что приводит к уменьшению толстых приложений.
Проблема с этой версией приложения по-прежнему возникает; существует риск взаимоблокировки, так как используется большая отправка без получения. Сервер отправляет один байт на каждые 3 полученных байта. Это может привести к взаимоблокировке, если размер буфера приема для этого примера приложения меньше 1000 байт.
Ключевые метрики производительности
Следующие метрики производительности выражаются в времени кругового пути (RTT), Goodput и издержках протокола. Описание этих терминов см. в разделе Сетевая терминология .
Эта версия отражает следующие метрики производительности:
- Время ячейки — .002*RTT
- Goodput — 2 килобайта/RTT
- Издержки протокола — 14 %
Из 14 % накладных расходов 6 % — из заголовков Ethernet, а остальные 8 % — от запуска и удаления подключения.
Связанные темы
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по