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

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

Числа

Что измеряют числа бенчмарков ruststream-gcp-pubsub и каких выводов они не позволяют сделать.

Сравнение с сырым клиентом​

Три цикла одной строки можно сравнивать между собой: они шли в одном процессе, чередуясь, против одного эмулятора. Строку нельзя сравнивать со строкой, которую публикует крейт другого брокера: транспорты выполняют на сообщение разную работу.

Строка с отметкой «неразличимо» - та, где цикл и сырой клиент расходятся меньше, чем разброс между прогонами каждого из них. Это честный исход везде, где транспорт стоит намного дороже диспетчеризации. Число ниже шума прогонов читалось бы как точность, которой никто не измерял, поэтому оно не публикуется.

Строку с отметкой «упирается в брокер» задавал эмулятор: все циклы провели прогон в одном и том же ожидании. Разница между ними тогда - нижняя граница цены диспетчеризации, а не её измерение. Первая строка лежит в нескольких процентах от этой границы и от прогона к прогону оказывается то по одну, то по другую её сторону, поэтому отметка на ней не говорит, был ли потребитель хоть раз пределом.

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

Числа абсолютные, работа клиента и фреймворка входит в них; отдельно цену фреймворка публикует ядро на своей странице бенчмарков. Одно и то же число инструкций стоит больше времени там, где оно промахивается мимо кэша, поэтому подсчёт - не время.

Каждое число - установившийся режим, наклон между прогоном на 1000 доставок и прогоном на 2000. Запуск сервиса и первая доставка - холодный старт, он оплачивается один раз.

Чего они не значат​

Эмулятор - это не сервис. Он отвечает по тому же API открытым текстом на локальной петле и оставляет за скобками рукопожатие TLS, обновление учётных данных и путь до региона. Все циклы говорят с одним и тем же эмулятором, поэтому сравнение между ними остаётся честным; сама же скорость - число локальное, и ничто здесь не предсказывает, сколько подписка отдаёт из региона.

Управление потоком - второе, чего эмулятор не воспроизводит. Он отдаёт всё, что успевает, каким бы ни был предел, записанный в подписке, так что ни один из циклов не встречает паузу, которой облачная подписка придерживает отставшего потребителя.

Строка - это один потребитель, одна подписка, маленькое тело и эмулятор на локальной петле. Измеряется то, во что доставка обходится внутри этого крейта, а не то, сколько способен пронести Pub/Sub.

Числа - снимок одной машины в один день, сборка записана рядом с ними. Их переснимают вручную на машине, отданной одному этому замеру: разница, которую они показывают, меньше шума машины, которую делят с другими задачами.