Показать сообщение отдельно
  #63 (permalink)  
Старый 06.01.2023, 12:09
Аватар для webgraph
Профессор
Отправить личное сообщение для webgraph Посмотреть профиль Найти все сообщения от webgraph
 
Регистрация: 14.11.2014
Сообщений: 186

Сообщение от Alexandroppolus Посмотреть сообщение
а какая проверка делается в п.3? всей очереди, или только первого элемента?

и как извлекается первый элемента? как устроена очередь? если это просто массив с операцией shift, то может работать долго на длинной очереди.
Мы уже провели 100500 тысяч тестов и выяснили, что массивы чрезвычайно медленные. Для buffer идеальный кандидат Set(). Для pool — Map(). А так для обоих случаев может быть кандидатом и Object() — но он не всегда себя показывает достойно в тестах.

Т.к. в buffer (список обрабатываемых участников) хранятся только имена участников, то Set отлично подходит для этой задачи — как в реализации, так и в скорости.

В pool (очередь участников, которые не смогли попасть в buffer) у нас уже хранятся сами операции, состоящие из 2-х имен участников и действии, которые первый участник хочет сделать для второго. Т.к. Set может хранить только уникальные значения без ключей, то для pool подходит либо Map, либо Object.
Ответить с цитированием