Эта страница переведена с английского языковой моделью. При любом расхождении верен английский оригинал.
Бенчмарки
Во что ruststream-kinesis обходится на каждой записи: пропускная способность против сырого
клиента aws-sdk-kinesis, инструкции и выделения памяти его кода.
Против сырого клиента
Первый график прогоняет каждый сценарий тремя способами на одной и той же конечной точке Kinesis.
«Сырой клиент» напрямую работает с aws-sdk-kinesis. «Крейт брокера» читает подписку этого крейта
собственным циклом, без рантайма. «RustStream» - сервис, который пишет пользователь: обработчик
#[subscriber] в приложении. Первая разность показывает, сколько этот крейт стоит поверх клиента,
которого он оборачивает, а вторая - сколько сверху добавляет рантайм.
Каждый цикл изображён полосой от лучшего круга до самого медленного: точка отмечает лучший круг, засечка - медиану. Ноль оси - лучший круг сырого клиента, и точка правее нуля значит, что цикл медленнее. Пустая точка отмечает цикл, у которого разница с сырым клиентом меньше разброса кругов. Таблица под графиком печатает лучший круг, а в скобках медиану.
Оба сценария читают один сегмент и записывают контрольную точку после каждой записи. Они различаются тем, куда уходит контрольная точка. Первый хранит её в процессе, как стандартное хранилище аренд. Второй записывает её в таблицу DynamoDB условной записью. Сырой цикл записывает ту же контрольную точку в то же место, поэтому две строки различаются хранилищем, а не крейтом.
Стоимость кода
Второй график считает, во что обходится одна запись на потоке выполнения сервиса: инструкции под
callgrind и выделения памяти под DHAT, в установившемся режиме. Каждый сценарий - сервис на
KinesisBroker против той же конечной точки, со
стандартным хранилищем аренд. В счёт входят диспетчеризация фреймворка и код этого крейта. Входит в
него и работа AWS SDK на этом потоке выполнения: сборка и подпись каждого запроса, обмен по HTTP и
разбор каждого ответа. Эта работа составляет большую часть каждого числа и почти всю строку ответа,
поэтому эти числа не сравнимы с числами брокера, клиент которого работает в собственных потоках
выполнения. «Холодный старт» - разовая стоимость подключения, открытия подписки, получения списка
сегментов, взятия аренды и итератора и получения первой записи.
Результаты
- Сырой клиент
- Крейт брокера
- RustStream
- круги, от лучшего до самого медленного
- лучший круг
- медианный круг
- разброс кругов
- неразличимо
ruststream-kinesis 0.7.0 on ruststream 0.7.0, AMD Ryzen 9 7900X 12-Core Processor, Linux 7.2.11-x64v3-xanmod1-1, localstack/localstack:4.14.0 (Kinesis and DynamoDB emulator) in Docker on localhost, not AWS, измерено 2026-10-18. Как сняты числа
- неразличимо
- неразличимо
- неразличимо
- неразличимо
Показать числа таблицей
| Сценарий | Сырой клиент | Крейт брокера | RustStream | Оверхед |
|---|---|---|---|---|
| one shard, 512 B JSON, in-process checkpoints | 358 msg/s (342) | 363 msg/s (346) (неразличимо к клиенту) | 365 msg/s (340) | неразличимо |
| one shard, 512 B JSON, DynamoDB checkpoints | 75 msg/s (75) | 79 msg/s (74) (неразличимо к клиенту) | 77 msg/s (77) | неразличимо |
AMD Ryzen 9 7900X 12-Core Processor, x86_64, 427-5912 MHz, 12 physical, 24 logical, 62.4 GiB, unknown, Linux 7.2.11-x64v3-xanmod1-1, 1.99.0, 3.25.1, bench, inheriting release (opt-level = 3, lto = fat, codegen-units = 16, debug = line-tables-only), ruststream-kinesis dynamodb-lease, ruststream macros,json. ruststream-kinesis 0.7.0, ruststream 0.7.0, измерено 2026-10-18.
Показать числа таблицей
| Сценарий | Инструкции | Выделения | Холодный старт |
|---|---|---|---|
| one shard, JSON decode into a small struct, ack each | 16 367,6 | 12,5 | 3 952 857 / 4 249 |
| one shard, reply with PutRecord through this crate's default policy | 368 050,9 | 395,6 | 4 236 029 / 4 579 |
| one shard, batches of 64, one read per batch | 21 572,3 | 18,3 | 4 028 415 / 4 310 |
Машина
| Процессор | AMD Ryzen 9 7900X 12-Core Processor |
|---|---|
| Архитектура | x86_64 |
| Частота | 427-5912 MHz |
| Ядра | 12 physical, 24 logical |
| Память | 62.4 GiB |
| Скорость памяти | unknown |
| Операционная система | Linux 7.2.11-x64v3-xanmod1-1 |
| Эмулятор | localstack/localstack:4.14.0 (Kinesis and DynamoDB emulator) in Docker on localhost, not AWS |
| Круговая задержка | 4.755 ms (DescribeStreamSummary, 2104 calls on one client) |
| Компилятор | 1.99.0 |
| Профиль сборки | bench, inheriting release (opt-level = 3, lto = fat, codegen-units = 16, debug = line-tables-only) |
| Фичи | ruststream-kinesis dynamodb-lease, ruststream macros,json |
| RUSTFLAGS | none (the recipe clears RUSTFLAGS, so the numbers are not tied to this CPU) |
| Valgrind | 3.25.1 |
Числа берутся из файла docs/benchmarks/results.json этой версии, который записывают рецепты
бенчмарков. Как они сняты, объясняет страница Методология, а какие выводы они
позволяют сделать, - страница Числа.