Эта страница переведена с английского языковой моделью. При любом расхождении верен английский оригинал.
Числа
Что измеряют числа бенчмарков ruststream-zeromq и каких выводов они сделать не позволяют.
Сравнение с сырым клиентом
Три цикла одной строки сравнимы между собой: они шли в одном процессе, чередуясь, на одном транспорте. Со строкой, которую публикует другой крейт брокера, строка не сравнима: там на пути стоит сервер, и транспорты выполняют на сообщение разную работу.
Узел - сокет в том же процессе. Без сети и без сервера та же стоимость сообщения составляет большую долю времени, чем между двумя машинами. Читайте процент как верхнюю границу того, что платит развёрнутый сервис.
Оверхед с пометкой «неразличимо» меньше разброса кругов тех двух циклов, которые он сравнивает. Число ниже этого разброса заявляло бы точность, которой никто не измерял, поэтому оно не печатается.
Стоимость кода
Счёт инструкций включает код этого крейта, рантайм над ним и разбиение на кадры в клиенте zeromq
на потоке сервиса. Тот же счёт стоит больше времени там, где код промахивается мимо кэша, поэтому
счёт инструкций - не время.
Каждое число - установившийся режим, разность между прогоном на 1000 сообщений и прогоном на 2000. Запуск сервиса, приём соединения от узла и первые выделения памяти за ними - холодный старт, который оплачивается один раз.
Чего они не значат
Строка - это один потребитель, одна очередь, небольшое тело и узел в том же процессе. Она измеряет, сколько стоит сообщение внутри этого крейта, а не сколько способен пропустить ZeroMQ.
Каждый цикл передаёт одни и те же три кадра, потому что эту раскладку документирует крейт и её пишет сторонний узел. Кадр заголовков уходит пустым. Сервис, который отправляет заголовки, на каждом сообщении доплачивает разбор заголовков этого крейта поверх приведённого здесь числа.
На этом транспорте сообщение ничто не завершает. Два цикла, которые идут через этот крейт, всё
равно вызывают ack, и он отвечает Unsupported, а сырому циклу вызывать нечего. Строка, которую
публикует другой брокер, содержит в своём окне настоящее подтверждение, а эта - ни одного.
Пул воркеров, несколько узлов и широковещательная рассылка многим подписчикам отвечают каждый на свой вопрос, и сравнение не измеряет ни один из них. График кода считает также обработчик пакетов и ответ на DEALER/ROUTER.
Числа - снимок одной машины в один день, а рядом с ними записана сборка. Их перемеряют вручную, на машине, отданной только прогону: различия, которые они показывают, меньше шума общей машины.