Перейти к основному содержимому
Нормативная версия документации - английская

Эта страница переведена с английского языковой моделью. При любом расхождении верен английский оригинал.

Бенчмарки

Во что RustStream обходится на каждом сообщении: в сравнении с сырым клиентом брокера и в стоимости собственного кода.

Между клиентом брокера и обработчиком фреймворк тратит время на каждое сообщение: поток подписки, декодирование, диспетчеризация, ack. Эта страница показывает эту стоимость двумя измерениями:

  • Против сырого клиента. Пропускная способность фреймворка и сырого клиента на настоящем брокере очереди, на одной машине и на одной работе. Отвечает, во что фреймворк обходится развёрнутому сервису.
  • Стоимость кода. Инструкции и выделения памяти на сообщение. В ruststream это собственный код фреймворка, без брокера очереди. Отвечает, что изменилось вместе с кодом. Точности хватает, чтобы отклонить пул-реквест, который сделал сообщение дороже.

Каждый крейт измеряет себя сам по общей методологии и публикует свои числа. Эта страница загружает их из ветки main в репозитории крейта и показывает каждый крейт на отдельной вкладке. Новый замер появляется на вкладке сразу после слияния. Какие выводы числа позволяют, а какие нет, объясняет страница Числа.

Против сырого клиента​

Первый график на вкладке брокера - сравнение с сырым клиентом. Как его читать:

  • у каждого сценария три цикла по три чередующихся круга. Ноль оси - лучший круг сырого клиента;
  • цикл изображён полосой от лучшего круга до самого медленного. Точка отмечает лучший круг, засечка - медиану. Точка правее нуля значит, что цикл медленнее сырого клиента;
  • затенённая полоса вокруг нуля - разброс от лучшего круга до худшего, на нём держится вердикт «неразличимо» для RustStream. Лучший круг внутри полосы нельзя отличить от сырого клиента;
  • пустая точка отмечает цикл, который крейт признал неразличимым. Вердикты справа от строки опубликовал сам крейт;
  • при наведении или фокусе строка показывает свои числа. Таблица под графиком перечисляет их все: лучший круг, а в скобках медиану;
  • «Адаптация библиотеки брокера» - собственные консьюмер и издатель адаптации без рантайма. Две разности читаются отдельно: сколько адаптация стоит поверх клиента брокера и сколько добавляет рантайм;
  • сценарии плагина, который поставляет крейт, вынесены на отдельный график со своей осью. Три цикла там - одно и то же приложение: без плагина, с плагином, написанным вручную, и с плагином библиотеки. Таблица плагина и вердикт рядом с плагином библиотеки показывают и его оверхед к плагину, написанному вручную.

Лучший круг ближе всего к стоимости без помех, а медиана показывает типичный круг (подробнее об отчёте).

Стоимость кода​

График стоимости кода замыкает каждую вкладку, а у ядра он единственный. Он показывает для каждого сценария, сколько инструкций и выделений памяти уходит на одно сообщение в установившемся режиме. Числа абсолютные. Стоимость фреймворка поверх настоящего клиента брокера показывает сравнение.

В ruststream этот график считает только собственный код фреймворка: измерение идёт на внутрипроцессном транспорте. Адаптация библиотеки брокера измеряет себя на настоящем транспорте, а что входит в её числа, сообщает страница бенчмарков адаптации.

У каждого крейта своя ось: адаптация брокера считает и работу своего клиента.

«Холодный старт» считает запуск сервиса вместе с обработкой первого сообщения. Эти инструкции и выделения сервис тратит один раз, а не на каждом сообщении. Строка показывает его при наведении или фокусе, а таблица под графиком перечисляет.

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

Результаты​

Загружаем опубликованные результаты...