Поделиться через


Редакция 2. Перепроектирование для меньшего количества подключений

В этой редакции пример приложения переработан, чтобы исключить ненужные подключения.

Предупреждение

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

 

ComputeNext( Map );
bind( s, ... );
connect( s, ... );
for(int i=0 ; i < ROWS ; ++i)
  for(int j=0 ; j < COLS ; ++j)
  {
    BYTE tmp[3];
    tmp[0] = i;
    tmp[1] = j;
    tmp[2] = Map[i][j];
    send( s, tmp, 3 );
    recv( s, &byRet, 1 );
  }
closesocket( s );

Оставшиеся проблемы

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

  • Приложение по-прежнему сериализовано и чатит.
  • Приложение по-прежнему имеет толстый дизайн; Существует много отправлений, которые не требуют никаких операций в этой конструкции.
  • Число отправляемых сообщений по-прежнему составляет всего 3 байта, что плохо передается.

Ключевые метрики производительности

Следующие метрики производительности выражаются в параметрах Время кругового пути (RTT), Goodput и Издержки протокола. Описание этих терминов см. в разделе Сетевая терминология .

Эта версия отражает следующие метрики производительности:

  • Время ячейки — 1*RTT
  • Goodput — 4 байта/RTT
  • Издержки протокола — 96,8 %

Улучшение медленного приложения

Терминология сети

Базовая версия: приложение с очень низкой производительностью

Редакция 1. Очистка очевидного

Редакция 3. Отправка сжатого блока

Будущие улучшения