XRT 2 队列吞吐样本

面向生产者与消费者之间的数据交接,队列同时提供逐项和批量接口。批量预留将校验与原子协调开销分摊到一组元素,适合能够自然聚合工作的高吞吐场景。

SPSC · 逐项
2,881 万 items/s

单生产者与单消费者之间的轻量数据传递。

MPSC · 批量 32
9,830 万 items/s

4 个生产者汇聚工作,由单消费者接收。

MPMC · 批量 32
1.344 亿 items/s

4 个生产者、4 个消费者协同处理队列数据。

以上为 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
串行采样,不绑定处理器

负载与统计

每个生产者 500,000 个元素
容量 4,096 · 批量大小 32
3 次独立样本,取中位数

完整样本

表格可横向滚动。保留逐次采样值,便于在相同条件下进行比较。

XRT 2 队列三次吞吐采样,单位 items/s
队列路径样本 1样本 2样本 3中位数
SPSC28,156,799.58628,811,967.33930,437,879.33228,811,967.339
MPSC8,135,048.3109,488,260.1768,070,233.6298,135,048.310
MPSC batch 3298,299,903.17598,070,463.628117,955,825.54398,299,903.175
MPMC6,591,453.7856,627,232.4256,689,527.0106,627,232.425
MPMC batch 32125,923,967.109136,885,043.940134,432,091.629134,432,091.629

归档来源:XRT 2 Queue Throughput Baseline · 记录提交 aff1ac5a549a。

性能背后的工程选择

平台原生网络后端

IOCP、epoll、kqueue、io_uring 与 select 汇聚到统一的端口抽象,应用沿用一致接口,后端发挥平台能力。

网络引擎 API →

批量处理与内存复用

队列批量接口、对象池、临时 arena 与引用式缓冲区提供多种数据组织方式,减少重复分配和协调成本。

队列 API →

密码硬件加速

AES 实现包含 x86 AES-NI / PCLMUL 与 ARM AES / PMULL 加速路径,并在运行时检测处理器能力。

密码原语 API →

把高效基础带入网络应用

通过 xhttp 组合 HTTP 连接池、流式收发与服务端运行时;通过 xws 组合 WebSocket 连接管理、广播与引用式发送。由内核提供基础数据路径,由扩展库组织领域能力。

在你的环境中复现

克隆仓库并切换到基准记录提交,在 Windows PowerShell 中运行仓库自带脚本。准备好可从 PATH 调用的 GCC 后,连续执行三次并保留输出。

PowerShell · 在独立基准目录执行
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
}

基准 C 源码 · 运行脚本