Эта страница переведена с английского языковой моделью. При любом расхождении верен английский оригинал.
Числа
Что измеряет каждое опубликованное число и какие числа можно сравнивать между собой.
Сравнение с сырым клиентом
Каждая строка - свой замер. Каждую строку измеряет тот, кто ведёт адаптацию библиотеки брокера: на своей машине, против брокера очереди на localhost. Поэтому строки между собой не сравниваются. Сравнимы только циклы внутри одной строки, и ради этого сравнения результаты публикуются.
Процент - верхняя граница. Брокер очереди на localhost ставит фреймворк в самые жёсткие условия. Сетевой задержки нет, поэтому та же абсолютная стоимость сообщения даёт больший процент, чем с брокером очереди за настоящей сетью. Читайте процент как верхнюю границу стоимости фреймворка для развёрнутого сервиса, а не как типичную величину.
«Упирается в брокер очереди» - нижняя граница. Пометка значит, что сырой клиент почти весь прогон ждал данных из сокета. Работа фреймворка укладывается в это ожидание, и измеренная разница стремится к нулю. Для такой нагрузки это честный результат: так выглядит насыщенный консьюмер. Но это число - нижняя граница стоимости диспетчеризации, а не её измерение. Бесплатной диспетчеризацию оно не делает.
Стоимость кода
Инструкции - точная мера. В ruststream два прогона одного бинарника дают одно число, и вдвое
более быстрая машина даёт то же число. Поэтому строки ruststream сравнимы между собой и с той же
строкой, измеренной на другой машине. Времени счётчик не показывает: та же величина обходится
дороже там, где код промахивается мимо кэша.
Измеряется только крейт. В ruststream величина - работа самого крейта и ничего больше:
сервис, написанный как у пользователя, над внутрипроцессной очередью, с декодированием нагрузки в
тип, чтением поля и подтверждением доставки. Брокера очереди в ней нет, поэтому число меняется
тогда и только тогда, когда меняется код фреймворка. Рост на два процента - дефект, а не шум.
Установившийся режим. Каждая величина на сообщение измерена в установившемся режиме. Запуск
сервиса стоит своё один раз: подключение, подписка, первые выделения памяти. Если разделить эту
цену на сообщения прогона, разовая цена попадёт в цену сообщения. Поэтому сценарий измеряется двумя
прогонами, второй вдвое длиннее первого, а стоимость сообщения - разница между ними. В ruststream
это тысяча и две тысячи доставок. Холодный старт измеряется отдельно, на одной доставке.
Выделения памяти считаются на сообщение. В ruststream на пути доставки их ноль: у работающего
сервиса сообщение проходит от очереди до тела обработчика, ни разу не обратившись к аллокатору. На
пути публикации в ruststream выделяется только то, что брокер берёт себе, чтобы владеть
переданным сообщением.
Адаптации библиотек брокеров измеряют себя на настоящем транспорте, чаще всего на брокере очереди из своего compose-файла. Поэтому в их числа входит и работа клиента брокера, а сами числа немного меняются от прогона к прогону. Страница бенчмарков адаптации сообщает, что входит в число, насколько оно меняется, на скольких доставках идут прогоны и какой допуск к нему применяется.