Образцы пропускной способности очередей XRT 2
Для передачи данных между производителями и потребителями очереди дают как поштучный, так и пакетный интерфейсы. Пакетное резервирование амортизирует затраты на проверки и атомарную координацию по группе элементов — хороший выбор для высокопроизводительных нагрузок, которые естественно агрегируются.
Лёгкая передача данных между одним производителем и одним потребителем.
Четыре производителя агрегируют работу, принимает один потребитель.
Четыре производителя и четыре потребителя вместе обрабатывают данные очереди.
Медианы трёх прогонов из заархивированного 2026-07-28 бенчмарка (округлены), в элементах очереди в секунду. Среда и нагрузка ниже.
Железо и система
AMD Ryzen 5 5600
6 ядер / 12 логических процессоров
Windows 10 Pro 10.0.19045 x64
Сборка и исполнение
GCC 16.1.0 · C11-O2 -Wall -Wextra -Werror
Последовательный замер, без привязки CPU
Нагрузка и статистика
500,000 элементов на производителя
Ёмкость 4,096 · размер пакета 32
3 независимых прогона, взята медиана
Полные образцы
Таблица прокручивается по горизонтали. Значения по прогонам сохранены, чтобы сравнения в идентичных условиях оставались возможными.
| Путь очереди | Прогон 1 | Прогон 2 | Прогон 3 | Медиана |
|---|---|---|---|---|
| SPSC | 28,156,799.586 | 28,811,967.339 | 30,437,879.332 | 28,811,967.339 |
| MPSC | 8,135,048.310 | 9,488,260.176 | 8,070,233.629 | 8,135,048.310 |
| MPSC пакет 32 | 98,299,903.175 | 98,070,463.628 | 117,955,825.543 | 98,299,903.175 |
| MPMC | 6,591,453.785 | 6,627,232.425 | 6,689,527.010 | 6,627,232.425 |
| MPMC пакет 32 | 125,923,967.109 | 136,885,043.940 | 134,432,091.629 | 134,432,091.629 |
Заархивированный источник: базовая линия пропускной способности очередей XRT 2 · записано на коммите aff1ac5a549a.
Инженерные решения за цифрами
Платформенно-родные сетевые бэкенды
IOCP, epoll, kqueue, io_uring и select сходятся в одну абстракцию порта: приложение держит один интерфейс, а каждый бэкенд использует возможности своей платформы.
API сетевого движка →Пакетирование и переиспользование памяти
Пакетные интерфейсы очередей, пулы объектов, временные арены и буферы с подсчётом ссылок дают несколько способов организовать данные, срезая повторные выделения и затраты координации.
API очередей →Аппаратное ускорение криптографии
Реализация AES несёт ускоренные пути x86 AES-NI / PCLMUL и ARM AES / PMULL, определяя возможности процессора в рантайме.
API криптографических примитивов →Эффективный фундамент — в сетевые приложения
xhttp компонует пул HTTP-соединений, потоковую отправку/приём и серверный рантайм; xws компонует управление соединениями WebSocket, широковещание и отправку по ссылкам. Ядро даёт базовые пути данных; библиотеки расширения организуют доменные возможности.
Воспроизведите в своей среде
Склонируйте репозиторий, перейдите на записанный коммит бенчмарка и запустите встроенный скрипт в Windows PowerShell. При доступном из PATH GCC выполните три прогона подряд и сохраните выводы.
git clone https://gitee.com/xywhsoft/xrt.git xrt-queue-bench
cd xrt-queue-bench
git checkout aff1ac5a549aaa0e2759e9af376f68a85e71261e
for ($sample = 1; $sample -le 3; ++$sample) {
powershell.exe -NoProfile -ExecutionPolicy Bypass -File dev/bench/run_queue_bench_windows.ps1
}