Эта страница переведена с английского языковой моделью. При любом расхождении верен английский оригинал.
Числа
Что измеряют числа бенчмарков ruststream-sea-file и каких выводов они сделать не позволяют.
Сравнение с сырым клиентом
Три цикла одной строки сравнимы между собой: они шли в одном процессе, чередуясь, на одном файле потока. Со строкой, которую публикует другой крейт брокера, строка не сравнима: транспорты выполняют на сообщение разную работу.
Файл лежит на той же машине и читается из прогретого страничного кэша. Без сети и без ожидания устройства та же стоимость сообщения составляет большую долю времени, чем на более медленном диске. Читайте процент как верхнюю границу того, что платит развёрнутый сервис.
Отрицательное число в строке воспроизведения не означает, что крейт быстрее клиента. Крейт читает с опережением в собственной задаче, а сырой цикл читает и обрабатывает в одной задаче. Это различие в устройстве двух циклов, а не измерение стоимости крейта.
Строка «упирается в хранилище» - та, где сырой клиент большую часть прогона ждал дозаписей. Работа крейта и рантайма тогда укладывается в это ожидание, и разница выходит около нуля. Это нижняя граница стоимости, а не её измерение.
Стоимость кода
Счёт инструкций включает код этого крейта, рантайм над ним и ту часть клиента, которая выполняется на потоке сервиса. Тот же счёт стоит больше времени там, где код промахивается мимо кэша, поэтому счёт инструкций - не время.
Каждое число - установившийся режим, разность между прогоном на 1000 доставок и прогоном на 2000. Открытие файла, подключение, подписка и первые выделения памяти за ними - холодный старт, который оплачивается один раз.
Ответ дописывается в тот же файл, который читает подписка. Читатель пропускает его по пути к следующему сообщению, и строка ответа учитывает и это чтение.
Чего они не значат
Строка - это одна подписка, которая читает один ключ потока одного файла, с небольшим телом. Она измеряет, сколько стоит доставка внутри этого крейта, а не как быстро можно читать диск.
Несколько ключей потока в одном файле, пул воркеров и обработчик пакетов отвечают каждый на свой вопрос, и сравнение не измеряет ни один из них. График кода считает обработчик пакетов и ответ над тем же файлом.
Числа - снимок одной машины в один день, а рядом с ними записана сборка. Их перемеряют вручную, на машине, отданной только прогону: различия, которые они показывают, меньше шума общей машины.