Эта страница переведена с английского языковой моделью. При любом расхождении верен английский оригинал.
Бенчмарки
Во что ruststream-sqs-sns обходится на каждом сообщении: пропускная способность против сырого
клиента aws-sdk-sqs, инструкции и выделения памяти его кода.
Против сырого клиента
Первый график прогоняет каждый сценарий тремя способами на одной и той же конечной
точке SQS. «Сырой
клиент» напрямую работает с aws-sdk-sqs. «Крейт брокера» читает подписку этого крейта
собственным циклом, без рантайма. «RustStream» - сервис, который пишет пользователь: обработчик
#[subscriber] в приложении. Первая разность показывает, сколько этот крейт стоит поверх клиента,
которого он оборачивает, а вторая - сколько сверху добавляет рантайм.
Каждый цикл изображён полосой от лучшего круга до самого медленного: точка отмечает лучший круг, засечка - медиану. Ноль оси - лучший круг сырого клиента, и точка правее нуля значит, что цикл медленнее. Пустая точка отмечает цикл, у которого разница с сырым клиентом меньше разброса кругов. Таблица под графиком печатает лучший круг, а в скобках медиану.
Оба сценария удаляют каждое сообщение отдельным вызовом DeleteMessage, потому что именно это
здесь делает ack. Сценарий FIFO распределяет сообщения по 64 группам сообщений, поэтому
придержанная группа никогда не задаёт темп, как показывает страница Группы.
Стоимость кода
Второй график считает, во что обходится одно сообщение на потоке сервиса: инструкции под
callgrind и выделения памяти под DHAT, в установившемся режиме. Каждый сценарий - сервис на
SqsBroker против той же конечной точки. В счёт входят
диспетчеризация фреймворка и код этого крейта. В него входит и работа AWS SDK на этом потоке:
сборка и подпись каждого запроса, обмен по HTTP и разбор каждого ответа. Эта работа составляет
большую часть каждого числа, поэтому эти числа не сравнимы с числами брокера, клиент которого
работает в собственных потоках. «Холодный старт» - разовая стоимость загрузки конфигурации AWS,
разрешения очереди, чтения её тайм-аута видимости и получения первого сообщения.
Результаты
- Сырой клиент
- Крейт брокера
- RustStream
- круги, от лучшего до самого медленного
- лучший круг
- медианный круг
- разброс кругов
- неразличимо
ruststream-sqs-sns 0.7.0 on ruststream 0.7.0, AMD Ryzen 9 7900X 12-Core Processor, Linux 7.2.10-x64v3-xanmod1-1, localstack/localstack:4.14.0 (the LocalStack emulator, not the hosted service) in Docker on localhost, измерено 2026-10-18. Как сняты числа
- неразличимо
- неразличимо
- неразличимо
- +1.8%
Показать числа таблицей
| Сценарий | Сырой клиент | Крейт брокера | RustStream | Оверхед |
|---|---|---|---|---|
| Standard queue, 512 B JSON, delete per message | 724 msg/s (711) | 705 msg/s (621) (неразличимо к клиенту) | 718 msg/s (687) | неразличимо |
| FIFO queue, 64 message groups, 512 B JSON, delete per message | 692 msg/s (691) | 686 msg/s (685) (неразличимо к клиенту) | 679 msg/s (679) | +1.8% |
AMD Ryzen 9 7900X 12-Core Processor, x86_64, 427-5912 MHz, 12 physical, 24 logical, 62.4 GiB, unknown, Linux 7.2.10-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-sqs-sns default (none), ruststream macros,json. ruststream-sqs-sns 0.7.0, ruststream 0.7.0, измерено 2026-10-18.
Показать числа таблицей
| Сценарий | Инструкции | Выделения | Холодный старт |
|---|---|---|---|
| standard queue, JSON decode into a small struct, delete per message | 454 735,5 | 461,3 | 2 514 593 / 2 728 |
| reply through the default SqsPublish policy, one SendMessage each | 823 549,6 | 871,3 | 2 541 645 / 2 729 |
| batches of 10, one ReceiveMessage each, delete per message | 452 297,8 | 461,3 | 2 534 373 / 2 730 |
Машина
| Процессор | AMD Ryzen 9 7900X 12-Core Processor |
|---|---|
| Архитектура | x86_64 |
| Частота | 427-5912 MHz |
| Ядра | 12 physical, 24 logical |
| Память | 62.4 GiB |
| Скорость памяти | unknown |
| Операционная система | Linux 7.2.10-x64v3-xanmod1-1 |
| Брокер | localstack/localstack:4.14.0 (the LocalStack emulator, not the hosted service) in Docker on localhost |
| Круговая задержка | 612 us per request to the stand |
| Компилятор | 1.99.0 |
| Профиль сборки | bench, inheriting release (opt-level = 3, lto = fat, codegen-units = 16, debug = line-tables-only) |
| Фичи | ruststream-sqs-sns default (none), 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 этой версии, который записывают рецепты
бенчмарков. Как они сняты, объясняет страница Методология, а какие выводы они
позволяют сделать, - страница Числа.