TWOBUFQUEUE / PERFORMANCE NOTES

256 MiB 缓存 · 回调循环固定 · 普通 write

固定长度、不写长度前缀的 TwoBufQueue,与三种开源 SPSC 队列对比。TwoBufQueue 包含完整第二层复制与独立回调线程;第三方使用原生消费线程逐条回调。

10 百万条 / 次5 次平均 / 指标8 B / 16 B / 32 B / 64 Bpublish_count = 10扫描当前块 · 不主动 flush高 QoS · 未硬绑核

先看负载复制的敏感性

8 MiB、空回调的独立 A/B:每次 1,000 万条,5 次平均;只改外部 Payload 复制构造,完整校验通过。

这是此前两种复制方式的独立实验,未使用本次新增的写预取;不计入本轮主表运行次数;记录时间:2026-10-11T00:16:44.565737+08:00。

本次正式表格固定采用 完整负载复制;rigtorp 可选目标写预取,ReaderWriterQueue 可选先清零再 memcpy。仅改变复制构造就能显著改变部分开源队列的结果。后面的差距包含负载类型与编译器代码生成的影响,不能将它全部算成队列算法的优势。具体处理器层面的原因尚未确定;默认复制构造的额外校验也未消除异常。
实现 / 长度成员初始化 · p50 ns构造函数体 memcpy · p50 ns
ReaderWriterQueue · 8 B1.2922.192
rigtorp/SPSCQueue · 8 B22.1002.625
atomic_queue · 8 B5.4335.475
ReaderWriterQueue · 16 B9.4001.292
rigtorp/SPSCQueue · 16 B23.4752.658
atomic_queue · 16 B6.8586.842
ReaderWriterQueue · 32 B19.6331.675
rigtorp/SPSCQueue · 32 B23.4923.233
atomic_queue · 32 B8.4508.667
ReaderWriterQueue · 64 B2.9673.500
rigtorp/SPSCQueue · 64 B20.9834.317
atomic_queue · 64 B10.66710.592

两个版本的默认成员都有 bytes{};构造函数体 memcpy 版本会先执行默认初始化。全部试验保留,没有按队列分别选择复制方式。对照汇总 · 144 次原始记录 · 对照源码

按消息长度查看吞吐

条形长度仅在同一消息长度内比较。单位 M条/s = 每秒百万条消息。

160 次正式测量16 次负载校验消息计数 / FIFO 校验通过写入失败为 0p999 样本量提示

TwoBufQueue 的第一层与第二层各 256 MiB,合计 512 MiB;三种开源 SPSC 请求 256 MiB。ReaderWriterQueue 会按内部块容量略微取整。

每种长度的回调业务循环次数固定,各实现共享;本轮未重新校准到 2~3 倍,表格保留实际时间比。

本次没有重新寻优,吞吐和各延时指标使用同一构造配置。普通 write 与 Session 的读端/发布配置和测量轮次可能不同,不能当作同参数对照。

只重新测量 normal 与三个开源对照;另一写模式的报告保持原样,没有把它的历史数据混入本轮主表。

每层数据池严格为 256 MiB;原生队列的保留槽与 rigtorp 首尾 padding 纳入这个 payload 存储预算,队列元数据和输入另计。

Session 正常遇到块满返回 insufficient_space,次数记入 session_block_exhaustions;这不是背压或丢消息。池/队列受压通过 Writer 内部压力统计报告。

rigtorp_write_prefetch 在完整参数中记录;开关在测试开始前选择模板,普通复制和带提示构造都只复制一次完整负载,不额外写零。atomic_queue 保持原有调用。

ReaderWriterQueue 16/32 B 使用 copy_after_zero:队列槽位默认清零后 memcpy 一次完整负载;8/64 B 保留成员复制。清零和复制均在写入计时内。各实现的调用端优化在行标签和完整参数中公开,不能把所有差异归因于队列算法。

256 MiB 回调循环按 8/16/32/64 B 固定为 1/1/2/4 次,本次未重新校准。用于控制读端/发布参数变化;实际时间比保留在表格中,不保证仍在 2~3 倍范围。

TwoBufQueue 8 B:is_scan_current=true, publish_count=10, 初始/最大扫描间隔=1000000/1000000 ns,最小等待=1 ms。

TwoBufQueue 16 B:is_scan_current=true, publish_count=10, 初始/最大扫描间隔=1000000/1000000 ns,最小等待=1 ms。

TwoBufQueue 32 B:is_scan_current=true, publish_count=10, 初始/最大扫描间隔=1000000/1000000 ns,最小等待=1 ms。

TwoBufQueue 64 B:is_scan_current=true, publish_count=10, 初始/最大扫描间隔=1000000/1000000 ns,最小等待=1 ms。

本轮只改变普通 write 的当前块扫描和发布参数;Session 的配置、报告和原始结果保持上一轮原样。三个开源对照本轮重新测量,未使用历史成绩替换。

256 MiB 的 1/1/2/4 次回调循环沿用 release_20261011_inline_fixed_110024;8 MiB 仍为 0。本次合计 320 次正式测量、32 次独立完整负载/FIFO 校验,没有重新校准或寻优。

测试框架增加 publish_count=10 的编译期 Writer 实例,并修正非 2 次幂发布次数的轮末自然发布对齐;未修改库 src/include 或第三方头文件。每轮少于 1000 条的尾部仍发送并记录,延时样本只统计完整的 1000 次写入组。

消息长度
8 B吞吐 · M条/s
TwoBufQueue
1,195.91
ReaderWriterQueue
833.85
rigtorp/SPSCQueue
311.29
atomic_queue
184.54
16 B吞吐 · M条/s
TwoBufQueue
741.87
ReaderWriterQueue
717.45
rigtorp/SPSCQueue
275.15
atomic_queue
127.85
32 B吞吐 · M条/s
TwoBufQueue
135.68
ReaderWriterQueue
437.55
rigtorp/SPSCQueue
195.21
atomic_queue
76.91
64 B吞吐 · M条/s
TwoBufQueue
93.64
ReaderWriterQueue
149.89
rigtorp/SPSCQueue
118.20
atomic_queue
71.73

吞吐与写入耗时

每个指标先按单次运行计算,再取 5 次算术平均。TwoBufQueue 整行加粗并加边框。

实现吞吐
M条/s · 下方为范围
有效负载
GB/s
p50
ns / 次
p99
ns / 次
p999
ns / 次
回调区间 / 写入
墙钟时间比
回调循环
次 / 消息
分轮
轮 / 运行
8 B回调循环 1 次 · 每次 1 轮 · 10,000,000 条
TwoBufQueue普通 write · 固定长度写1,195.911,132.83 – 1,243.069.5670.8081.4253.0333.38×11
ReaderWriterQueue成员初始化复制833.85746.29 – 876.016.6711.2502.2174.5753.36×11
rigtorp/SPSCQueue成员复制+目标写预取311.29296.52 – 333.862.4903.1005.4679.9671.00×11
atomic_queue成员初始化复制184.54178.10 – 191.211.4765.08314.25838.0001.18×11
16 B回调循环 1 次 · 每次 1 轮 · 10,000,000 条
TwoBufQueue普通 write · 固定长度写741.87514.21 – 1,025.2211.8700.9175.67528.3832.66×11
ReaderWriterQueue先清零,再 memcpy717.45609.02 – 768.4111.4791.3083.1256.3833.24×11
rigtorp/SPSCQueue成员复制+目标写预取275.15231.80 – 312.004.4023.4507.60014.2421.00×11
atomic_queue成员初始化复制127.85123.88 – 131.992.0466.00821.96731.6581.01×11
32 B回调循环 2 次 · 每次 2 轮 · 10,000,000 条
TwoBufQueue普通 write · 固定长度写135.68120.01 – 153.224.3425.20812.75026.7581.02×22
ReaderWriterQueue先清零,再 memcpy437.55302.80 – 506.6814.0022.41719.667120.7082.30×22
rigtorp/SPSCQueue成员复制+目标写预取195.21117.60 – 232.956.2474.7509.73315.4421.00×22
atomic_queue成员初始化复制76.9170.95 – 82.792.4619.60027.83342.0331.00×22
64 B回调循环 4 次 · 每次 3 轮 · 10,000,000 条
TwoBufQueue普通 write · 固定长度写93.6493.10 – 94.035.9939.93320.68328.4331.02×43
ReaderWriterQueue成员初始化复制149.8971.92 – 220.259.5934.83344.575182.2501.48×43
rigtorp/SPSCQueue成员复制+目标写预取118.20107.18 – 124.107.5658.22519.758144.4171.00×43
atomic_queue成员初始化复制71.7368.61 – 74.294.59110.85825.91748.4671.00×43

p50 / p99 / p999 是“每组 1000 次成功写入的平均耗时”的分位数,不是单条消息端到端延时,也不是单次 write 的分位数。吞吐使用独立的未逐组计时运行。GB/s 按业务净负载计算。时间比 = 各轮首条回调开始至末条回调结束的耗时之和 ÷ 各轮写线程发送耗时之和,再对运行取平均;它包含分发、等待数据和调度,不是每次回调函数 CPU 耗时之和。

回调时间与背压

与吞吐表使用同一批正式运行。时间、次数按运行取平均;峰值 RSS 为这组运行的最大值。

实现写线程
ms
回调区间
ms
受压消息
条 / 次运行
失败尝试
次 / 运行
重试时间
ms
Writer 压力
内部事件
复制层拒绝
内部事件
峰值 RSS
MiB
8 B正式吞吐运行的逐次平均;RSS 为本组最大值
TwoBufQueue8.3728.270.00.00.00000394.9
ReaderWriterQueue12.0440.330.00.00.000——367.3
rigtorp/SPSCQueue32.1832.180.00.00.000——334.0
atomic_queue54.2263.910.00.00.000——366.0
16 B正式吞吐运行的逐次平均;RSS 为本组最大值
TwoBufQueue14.6936.460.00.00.00000544.9
ReaderWriterQueue14.0345.090.00.00.000——427.7
rigtorp/SPSCQueue36.7036.700.00.00.000——410.3
atomic_queue78.2579.110.00.00.000——426.3
32 B正式吞吐运行的逐次平均;RSS 为本组最大值
TwoBufQueue74.1575.260.00.00.00000480.4
ReaderWriterQueue23.7452.790.00.00.000——471.9
rigtorp/SPSCQueue54.4154.410.00.00.000——462.5
atomic_queue130.51130.560.00.00.000——470.5
64 B正式吞吐运行的逐次平均;RSS 为本组最大值
TwoBufQueue106.80108.820.00.00.00000680.9
ReaderWriterQueue81.17108.410.00.00.000——590.7
rigtorp/SPSCQueue84.8384.830.00.00.000——462.6
atomic_queue139.52139.700.00.00.000——466.6

受压消息至少经历一次 try 写入失败;失败尝试含重复重试,最终仍全部写入。Writer 与复制层内部事件仅 TwoBufQueue 提供,其他实现显示“—”,不能把“—”解释为 0。回调区间含分发、轮内等待及调度,时间比大于 1 本身不等于写端背压。RSS 包含进程开销,不等于缓存容量。

逐次测量值

展开查看全部 5 次吞吐及分位数。没有剔除异常值,也没有将多个运行的样本合并计算分位数。

8 B5 次原始值 · 回调循环 1 次
实现 / 指标第 1 次第 2 次第 3 次第 4 次第 5 次平均
TwoBufQueue吞吐 M条/s1,212.7091,243.0601,132.8341,235.8591,155.1011,195.913
TwoBufQueuep50 ns0.7920.8750.8750.7500.7500.808
TwoBufQueuep99 ns1.4581.5001.6251.5421.0001.425
TwoBufQueuep999 ns2.1253.0423.5424.6671.7923.033
ReaderWriterQueue吞吐 M条/s872.908857.918876.008746.287816.129833.850
ReaderWriterQueuep50 ns1.2501.2501.2501.2501.2501.250
ReaderWriterQueuep99 ns1.9581.9172.3332.6252.2502.217
ReaderWriterQueuep999 ns4.0424.7923.1677.0003.8754.575
rigtorp/SPSCQueue吞吐 M条/s333.856296.523304.406312.545309.096311.285
rigtorp/SPSCQueuep50 ns3.0002.9583.3753.0423.1253.100
rigtorp/SPSCQueuep99 ns4.6674.2506.6675.5426.2085.467
rigtorp/SPSCQueuep999 ns9.2927.62512.9588.79211.1679.967
atomic_queue吞吐 M条/s184.711187.305191.214178.100181.375184.541
atomic_queuep50 ns4.8755.3335.0005.1675.0425.083
atomic_queuep99 ns7.2087.62539.7088.5838.16714.258
atomic_queuep999 ns36.58336.58343.95837.62535.25038.000
16 B5 次原始值 · 回调循环 1 次
实现 / 指标第 1 次第 2 次第 3 次第 4 次第 5 次平均
TwoBufQueue吞吐 M条/s995.780514.2081,025.220624.096550.036741.868
TwoBufQueuep50 ns0.9580.9170.9580.8750.8750.917
TwoBufQueuep99 ns3.87514.1673.5832.4584.2925.675
TwoBufQueuep999 ns12.125105.2509.7086.0838.75028.383
ReaderWriterQueue吞吐 M条/s725.422731.814609.023752.596768.408717.453
ReaderWriterQueuep50 ns1.2501.2921.2501.2921.4581.308
ReaderWriterQueuep99 ns2.3335.1252.0422.7083.4173.125
ReaderWriterQueuep999 ns3.20810.1672.7928.5007.2506.383
rigtorp/SPSCQueue吞吐 M条/s273.566290.803231.799312.002267.590275.152
rigtorp/SPSCQueuep50 ns3.2083.2083.1673.2504.4173.450
rigtorp/SPSCQueuep99 ns6.2926.7505.3755.66713.9177.600
rigtorp/SPSCQueuep999 ns9.41712.7508.1259.33331.58314.242
atomic_queue吞吐 M条/s131.995123.879129.033127.571126.793127.854
atomic_queuep50 ns6.0006.0006.2925.8755.8756.008
atomic_queuep99 ns23.50024.37522.33316.29223.33321.967
atomic_queuep999 ns33.37543.41729.00020.79231.70831.658
32 B5 次原始值 · 回调循环 2 次
实现 / 指标第 1 次第 2 次第 3 次第 4 次第 5 次平均
TwoBufQueue吞吐 M条/s137.007120.007133.870134.292153.221135.680
TwoBufQueuep50 ns6.4174.4585.6254.5005.0425.208
TwoBufQueuep99 ns17.54211.25011.91711.20811.83312.750
TwoBufQueuep999 ns56.29215.66728.25013.66719.91726.758
ReaderWriterQueue吞吐 M条/s474.117302.797399.291504.881506.680437.553
ReaderWriterQueuep50 ns3.1673.2081.9581.8751.8752.417
ReaderWriterQueuep99 ns80.0426.0003.9584.2504.08319.667
ReaderWriterQueuep999 ns559.58312.9178.16711.41711.458120.708
rigtorp/SPSCQueue吞吐 M条/s206.909218.431117.596232.950200.141195.205
rigtorp/SPSCQueuep50 ns4.1674.1675.5424.2505.6254.750
rigtorp/SPSCQueuep99 ns8.08312.9179.3338.08310.2509.733
rigtorp/SPSCQueuep999 ns12.62520.37514.83312.00017.37515.442
atomic_queue吞吐 M条/s72.42077.31182.78781.06070.94676.905
atomic_queuep50 ns9.16710.04210.0428.66710.0839.600
atomic_queuep99 ns26.95830.00027.58326.54228.08327.833
atomic_queuep999 ns33.50047.29255.70829.83343.83342.033
64 B5 次原始值 · 回调循环 4 次
实现 / 指标第 1 次第 2 次第 3 次第 4 次第 5 次平均
TwoBufQueue吞吐 M条/s93.48893.98893.56994.03293.10393.636
TwoBufQueuep50 ns9.91710.0009.9179.8759.9589.933
TwoBufQueuep99 ns21.58319.16720.20820.91721.54220.683
TwoBufQueuep999 ns27.12527.95824.50036.75025.83328.433
ReaderWriterQueue吞吐 M条/s88.69071.919177.922190.661220.251149.889
ReaderWriterQueuep50 ns4.2924.3756.2084.6674.6254.833
ReaderWriterQueuep99 ns9.62512.66724.292163.29213.00044.575
ReaderWriterQueuep999 ns15.33319.875220.333630.87524.833182.250
rigtorp/SPSCQueue吞吐 M条/s124.102122.488107.183117.795119.436118.201
rigtorp/SPSCQueuep50 ns7.9178.5838.0007.8758.7508.225
rigtorp/SPSCQueuep99 ns12.75045.04214.20812.50014.29219.758
rigtorp/SPSCQueuep999 ns16.792633.25025.70819.54226.792144.417
atomic_queue吞吐 M条/s70.50072.36372.88268.61474.29371.731
atomic_queuep50 ns10.75010.79210.62511.33310.79210.858
atomic_queuep99 ns25.83325.12525.79228.16724.66725.917
atomic_queuep999 ns50.41741.00041.87570.12538.91748.467

波动较大的吞吐组:16 B · TwoBufQueue:514.21–1,025.22 M条/s;16 B · ReaderWriterQueue:609.02–768.41 M条/s;16 B · rigtorp/SPSCQueue:231.80–312.00 M条/s;32 B · TwoBufQueue:120.01–153.22 M条/s;32 B · ReaderWriterQueue:302.80–506.68 M条/s;32 B · rigtorp/SPSCQueue:117.60–232.95 M条/s;64 B · ReaderWriterQueue:71.92–220.25 M条/s。所有测量均保留,未删除低值。

测试口径与复现信息

固定本次参数进行对比;本报告没有执行全参数寻优,也不声称全局最优。

发送、复制与排空

TwoBufQueue:Writer → 复制线程 → 第二层缓存 → 独立回调线程,逐消息调用回调。

按长度保留冻结的块大小和每层容量。普通 write 与 Session 的读端及发布配置各自独立,完整参数如下。四种实现正式写入次数与净负载长度相同。

每轮上限按缓存的 80% / 消息字节数计算,再停在实际发布批次的整数倍位置。TwoBufQueue 开启当前块扫描,无逐条或轮末主动 flush。停止写线程计时后等待本轮全部回调完成;最终尾部由正常 finish 收尾。

两份报告同时改变缓存大小与回调工作量,不能将两组差异全部归因于缓存;比较容量影响需另做相同回调负载的对照。

扫描当前块 · 不主动 flush;publish_count 固定为 10。仅预触碰写端数据页,第二层数据页没有额外预触碰。

吞吐和分组延时均在计时前准备整轮输入;每条消息的全部字都随序号变化;四种实现使用同一完整负载;队列内仍复制一次完整负载;各行标明成员复制、目标写预取或先清零再 memcpy,完整参数记录实际选择;先清零的额外存储也包含在计时中。输入缓冲单独计算,不算队列容量,也不保证常驻 L1。

时钟、调度与限制

本机为 macOS-14.4.1-arm64-arm-64bit / arm64,Release 优化构建。

计时器:mach_absolute_time;每组 1000 次写入。组均值刻度约 0.0417 ns / 次。

写线程调度:高 QoS · 未硬绑核。调度打断和其他系统活动仍可能影响结果;复制与回调线程保留自身调度策略。

吞吐只累计写线程发送时间;排空在计时之外。并发复制 / 回调仍可能争用缓存和带宽,因此不是持续端到端吞吐。

p999 仅供观察:每次延时测量约有 9,998–10,000 个组均值样本,少于框架建议的 100,000 个。p999 的尾部覆盖有限,不能据此做稳定的尾延时承诺。p999 表示 99.9% 分位数;平均值不代表置信区间。
完整构造参数 · 每种长度 / 实现 / 优化指标
{
  "8 B / two_buf_queue": {
    "transport": "two_buf_queue",
    "mode": "throughput",
    "payload_bytes": 8,
    "messages": 10000000,
    "warmup_messages": 50000,
    "callback_iterations": 1,
    "verify_payload": false,
    "prepared_input": true,
    "variable_payload": true,
    "prepared_input_limit_bytes": 268435456,
    "measure_callback_time": true,
    "producer_interval_ns": 0,
    "source_block_size": 1048576,
    "source_pool_min": 256,
    "source_pool_max": 256,
    "source_queue_capacity": 1024,
    "writer_backpressure": "drop",
    "writer_spin_count": 1000,
    "writer_wait_timeout_ms": 5000,
    "output_block_size": 1048576,
    "output_frame_capacity": 1,
    "output_pool_min": 256,
    "output_pool_max": 256,
    "output_queue_capacity": 1024,
    "cancel_claim_mode": "tail",
    "output_mode": "spsc",
    "output_reader_mode": "wait_signal",
    "output_reader_count": 1,
    "output_retry_wait_us": 1000,
    "output_enable_stats": false,
    "is_scan_current": true,
    "reader_spin_count": 10000,
    "rescan_interval_ns": 1000000,
    "rescan_max_interval_ns": 1000000,
    "consumer_cpu": -1,
    "producer_cpu": -1,
    "producer_qos": "user_interactive",
    "round_storage_bytes": 214748364,
    "spsc_buffer_bytes": 268435456,
    "prefault_producer_buffers": true,
    "finish_timeout_ms": 5000,
    "work_wait_min_ms": 1,
    "finish_retry_ms": 1,
    "publish_count": 10,
    "spsc_capacity": 0,
    "retry_yield_every": 1024,
    "spsc_idle_spins": 1000,
    "spsc_idle_sleep_ns": 0,
    "timer": "auto",
    "sample_every": 32,
    "max_samples": 1000000,
    "latency_batch_size": 1000,
    "timer_calibration_samples": 16384,
    "call_batch_size": 256,
    "random_seed": 42,
    "timeout_seconds": 180,
    "buffer_budget_bytes": 536870912,
    "use_write_session": false,
    "rigtorp_write_prefetch": false,
    "readerwriterqueue_copy_after_zero": false
  },
  "8 B / readerwriterqueue": {
    "transport": "readerwriterqueue",
    "mode": "throughput",
    "payload_bytes": 8,
    "messages": 10000000,
    "warmup_messages": 50000,
    "callback_iterations": 1,
    "verify_payload": false,
    "prepared_input": true,
    "variable_payload": true,
    "prepared_input_limit_bytes": 268435456,
    "measure_callback_time": true,
    "producer_interval_ns": 0,
    "source_block_size": 1048576,
    "source_pool_min": 256,
    "source_pool_max": 256,
    "source_queue_capacity": 1024,
    "writer_backpressure": "drop",
    "writer_spin_count": 1000,
    "writer_wait_timeout_ms": 5000,
    "output_block_size": 1048576,
    "output_frame_capacity": 1024,
    "output_pool_min": 256,
    "output_pool_max": 256,
    "output_queue_capacity": 1024,
    "cancel_claim_mode": "tail",
    "output_mode": "spsc",
    "output_reader_mode": "wait_signal",
    "output_reader_count": 1,
    "output_retry_wait_us": 1000,
    "output_enable_stats": false,
    "is_scan_current": false,
    "reader_spin_count": 1000,
    "rescan_interval_ns": 1000000,
    "rescan_max_interval_ns": 30000000,
    "consumer_cpu": -1,
    "producer_cpu": -1,
    "producer_qos": "user_interactive",
    "round_storage_bytes": 214748364,
    "spsc_buffer_bytes": 268435456,
    "prefault_producer_buffers": true,
    "finish_timeout_ms": 5000,
    "work_wait_min_ms": 1,
    "finish_retry_ms": 1,
    "publish_count": 4294967295,
    "spsc_capacity": 33488385,
    "retry_yield_every": 1024,
    "spsc_idle_spins": 0,
    "spsc_idle_sleep_ns": 10000,
    "timer": "auto",
    "sample_every": 32,
    "max_samples": 1000000,
    "latency_batch_size": 1000,
    "timer_calibration_samples": 16384,
    "call_batch_size": 256,
    "random_seed": 42,
    "timeout_seconds": 180,
    "buffer_budget_bytes": 536870912,
    "use_write_session": false,
    "rigtorp_write_prefetch": false,
    "readerwriterqueue_copy_after_zero": false
  },
  "8 B / rigtorp": {
    "transport": "rigtorp",
    "mode": "throughput",
    "payload_bytes": 8,
    "messages": 10000000,
    "warmup_messages": 50000,
    "callback_iterations": 1,
    "verify_payload": false,
    "prepared_input": true,
    "variable_payload": true,
    "prepared_input_limit_bytes": 268435456,
    "measure_callback_time": true,
    "producer_interval_ns": 0,
    "source_block_size": 1048576,
    "source_pool_min": 256,
    "source_pool_max": 256,
    "source_queue_capacity": 1024,
    "writer_backpressure": "drop",
    "writer_spin_count": 1000,
    "writer_wait_timeout_ms": 5000,
    "output_block_size": 1048576,
    "output_frame_capacity": 1024,
    "output_pool_min": 256,
    "output_pool_max": 256,
    "output_queue_capacity": 1024,
    "cancel_claim_mode": "tail",
    "output_mode": "spsc",
    "output_reader_mode": "wait_signal",
    "output_reader_count": 1,
    "output_retry_wait_us": 1000,
    "output_enable_stats": false,
    "is_scan_current": false,
    "reader_spin_count": 1000,
    "rescan_interval_ns": 1000000,
    "rescan_max_interval_ns": 30000000,
    "consumer_cpu": -1,
    "producer_cpu": -1,
    "producer_qos": "user_interactive",
    "round_storage_bytes": 214748364,
    "spsc_buffer_bytes": 268435456,
    "prefault_producer_buffers": true,
    "finish_timeout_ms": 5000,
    "work_wait_min_ms": 1,
    "finish_retry_ms": 1,
    "publish_count": 4294967295,
    "spsc_capacity": 33554415,
    "retry_yield_every": 1024,
    "spsc_idle_spins": 0,
    "spsc_idle_sleep_ns": 1000,
    "timer": "auto",
    "sample_every": 32,
    "max_samples": 1000000,
    "latency_batch_size": 1000,
    "timer_calibration_samples": 16384,
    "call_batch_size": 256,
    "random_seed": 42,
    "timeout_seconds": 180,
    "buffer_budget_bytes": 536870912,
    "use_write_session": false,
    "rigtorp_write_prefetch": true,
    "readerwriterqueue_copy_after_zero": false
  },
  "8 B / atomic_queue": {
    "transport": "atomic_queue",
    "mode": "throughput",
    "payload_bytes": 8,
    "messages": 10000000,
    "warmup_messages": 50000,
    "callback_iterations": 1,
    "verify_payload": false,
    "prepared_input": true,
    "variable_payload": true,
    "prepared_input_limit_bytes": 268435456,
    "measure_callback_time": true,
    "producer_interval_ns": 0,
    "source_block_size": 1048576,
    "source_pool_min": 256,
    "source_pool_max": 256,
    "source_queue_capacity": 1024,
    "writer_backpressure": "drop",
    "writer_spin_count": 1000,
    "writer_wait_timeout_ms": 5000,
    "output_block_size": 1048576,
    "output_frame_capacity": 1024,
    "output_pool_min": 256,
    "output_pool_max": 256,
    "output_queue_capacity": 1024,
    "cancel_claim_mode": "tail",
    "output_mode": "spsc",
    "output_reader_mode": "wait_signal",
    "output_reader_count": 1,
    "output_retry_wait_us": 1000,
    "output_enable_stats": false,
    "is_scan_current": false,
    "reader_spin_count": 1000,
    "rescan_interval_ns": 1000000,
    "rescan_max_interval_ns": 30000000,
    "consumer_cpu": -1,
    "producer_cpu": -1,
    "producer_qos": "user_interactive",
    "round_storage_bytes": 214748364,
    "spsc_buffer_bytes": 268435456,
    "prefault_producer_buffers": true,
    "finish_timeout_ms": 5000,
    "work_wait_min_ms": 1,
    "finish_retry_ms": 1,
    "publish_count": 4294967295,
    "spsc_capacity": 33554432,
    "retry_yield_every": 1024,
    "spsc_idle_spins": 1000,
    "spsc_idle_sleep_ns": 10000,
    "timer": "auto",
    "sample_every": 32,
    "max_samples": 1000000,
    "latency_batch_size": 1000,
    "timer_calibration_samples": 16384,
    "call_batch_size": 256,
    "random_seed": 42,
    "timeout_seconds": 180,
    "buffer_budget_bytes": 536870912,
    "use_write_session": false,
    "rigtorp_write_prefetch": false,
    "readerwriterqueue_copy_after_zero": false
  },
  "16 B / two_buf_queue": {
    "transport": "two_buf_queue",
    "mode": "throughput",
    "payload_bytes": 16,
    "messages": 10000000,
    "warmup_messages": 50000,
    "callback_iterations": 1,
    "verify_payload": false,
    "prepared_input": true,
    "variable_payload": true,
    "prepared_input_limit_bytes": 268435456,
    "measure_callback_time": true,
    "producer_interval_ns": 0,
    "source_block_size": 262144,
    "source_pool_min": 1024,
    "source_pool_max": 1024,
    "source_queue_capacity": 4096,
    "writer_backpressure": "drop",
    "writer_spin_count": 1000,
    "writer_wait_timeout_ms": 5000,
    "output_block_size": 262144,
    "output_frame_capacity": 1024,
    "output_pool_min": 1024,
    "output_pool_max": 1024,
    "output_queue_capacity": 4096,
    "cancel_claim_mode": "tail",
    "output_mode": "spsc",
    "output_reader_mode": "wait_signal",
    "output_reader_count": 1,
    "output_retry_wait_us": 1000,
    "output_enable_stats": false,
    "is_scan_current": true,
    "reader_spin_count": 1000,
    "rescan_interval_ns": 1000000,
    "rescan_max_interval_ns": 1000000,
    "consumer_cpu": -1,
    "producer_cpu": -1,
    "producer_qos": "user_interactive",
    "round_storage_bytes": 214748364,
    "spsc_buffer_bytes": 268435456,
    "prefault_producer_buffers": true,
    "finish_timeout_ms": 5000,
    "work_wait_min_ms": 1,
    "finish_retry_ms": 1,
    "publish_count": 10,
    "spsc_capacity": 0,
    "retry_yield_every": 1024,
    "spsc_idle_spins": 1000,
    "spsc_idle_sleep_ns": 0,
    "timer": "auto",
    "sample_every": 32,
    "max_samples": 1000000,
    "latency_batch_size": 1000,
    "timer_calibration_samples": 16384,
    "call_batch_size": 256,
    "random_seed": 42,
    "timeout_seconds": 180,
    "buffer_budget_bytes": 536870912,
    "use_write_session": false,
    "rigtorp_write_prefetch": false,
    "readerwriterqueue_copy_after_zero": false
  },
  "16 B / readerwriterqueue": {
    "transport": "readerwriterqueue",
    "mode": "throughput",
    "payload_bytes": 16,
    "messages": 10000000,
    "warmup_messages": 50000,
    "callback_iterations": 1,
    "verify_payload": false,
    "prepared_input": true,
    "variable_payload": true,
    "prepared_input_limit_bytes": 268435456,
    "measure_callback_time": true,
    "producer_interval_ns": 0,
    "source_block_size": 1048576,
    "source_pool_min": 256,
    "source_pool_max": 256,
    "source_queue_capacity": 1024,
    "writer_backpressure": "drop",
    "writer_spin_count": 1000,
    "writer_wait_timeout_ms": 5000,
    "output_block_size": 1048576,
    "output_frame_capacity": 1024,
    "output_pool_min": 256,
    "output_pool_max": 256,
    "output_queue_capacity": 1024,
    "cancel_claim_mode": "tail",
    "output_mode": "spsc",
    "output_reader_mode": "wait_signal",
    "output_reader_count": 1,
    "output_retry_wait_us": 1000,
    "output_enable_stats": false,
    "is_scan_current": false,
    "reader_spin_count": 1000,
    "rescan_interval_ns": 5000000,
    "rescan_max_interval_ns": 30000000,
    "consumer_cpu": -1,
    "producer_cpu": -1,
    "producer_qos": "user_interactive",
    "round_storage_bytes": 214748364,
    "spsc_buffer_bytes": 268435456,
    "prefault_producer_buffers": true,
    "finish_timeout_ms": 5000,
    "work_wait_min_ms": 1,
    "finish_retry_ms": 1,
    "publish_count": 4294967295,
    "spsc_capacity": 16743937,
    "retry_yield_every": 1024,
    "spsc_idle_spins": 0,
    "spsc_idle_sleep_ns": 10000,
    "timer": "auto",
    "sample_every": 32,
    "max_samples": 1000000,
    "latency_batch_size": 1000,
    "timer_calibration_samples": 16384,
    "call_batch_size": 256,
    "random_seed": 42,
    "timeout_seconds": 180,
    "buffer_budget_bytes": 536870912,
    "use_write_session": false,
    "rigtorp_write_prefetch": false,
    "readerwriterqueue_copy_after_zero": true
  },
  "16 B / rigtorp": {
    "transport": "rigtorp",
    "mode": "throughput",
    "payload_bytes": 16,
    "messages": 10000000,
    "warmup_messages": 50000,
    "callback_iterations": 1,
    "verify_payload": false,
    "prepared_input": true,
    "variable_payload": true,
    "prepared_input_limit_bytes": 268435456,
    "measure_callback_time": true,
    "producer_interval_ns": 0,
    "source_block_size": 1048576,
    "source_pool_min": 256,
    "source_pool_max": 256,
    "source_queue_capacity": 1024,
    "writer_backpressure": "drop",
    "writer_spin_count": 1000,
    "writer_wait_timeout_ms": 5000,
    "output_block_size": 1048576,
    "output_frame_capacity": 1024,
    "output_pool_min": 256,
    "output_pool_max": 256,
    "output_queue_capacity": 1024,
    "cancel_claim_mode": "tail",
    "output_mode": "spsc",
    "output_reader_mode": "wait_signal",
    "output_reader_count": 1,
    "output_retry_wait_us": 1000,
    "output_enable_stats": false,
    "is_scan_current": false,
    "reader_spin_count": 1000,
    "rescan_interval_ns": 5000000,
    "rescan_max_interval_ns": 30000000,
    "consumer_cpu": -1,
    "producer_cpu": -1,
    "producer_qos": "user_interactive",
    "round_storage_bytes": 214748364,
    "spsc_buffer_bytes": 268435456,
    "prefault_producer_buffers": true,
    "finish_timeout_ms": 5000,
    "work_wait_min_ms": 1,
    "finish_retry_ms": 1,
    "publish_count": 4294967295,
    "spsc_capacity": 16777207,
    "retry_yield_every": 1024,
    "spsc_idle_spins": 0,
    "spsc_idle_sleep_ns": 1000,
    "timer": "auto",
    "sample_every": 32,
    "max_samples": 1000000,
    "latency_batch_size": 1000,
    "timer_calibration_samples": 16384,
    "call_batch_size": 256,
    "random_seed": 42,
    "timeout_seconds": 180,
    "buffer_budget_bytes": 536870912,
    "use_write_session": false,
    "rigtorp_write_prefetch": true,
    "readerwriterqueue_copy_after_zero": false
  },
  "16 B / atomic_queue": {
    "transport": "atomic_queue",
    "mode": "throughput",
    "payload_bytes": 16,
    "messages": 10000000,
    "warmup_messages": 50000,
    "callback_iterations": 1,
    "verify_payload": false,
    "prepared_input": true,
    "variable_payload": true,
    "prepared_input_limit_bytes": 268435456,
    "measure_callback_time": true,
    "producer_interval_ns": 0,
    "source_block_size": 1048576,
    "source_pool_min": 256,
    "source_pool_max": 256,
    "source_queue_capacity": 1024,
    "writer_backpressure": "drop",
    "writer_spin_count": 1000,
    "writer_wait_timeout_ms": 5000,
    "output_block_size": 1048576,
    "output_frame_capacity": 1024,
    "output_pool_min": 256,
    "output_pool_max": 256,
    "output_queue_capacity": 1024,
    "cancel_claim_mode": "tail",
    "output_mode": "spsc",
    "output_reader_mode": "wait_signal",
    "output_reader_count": 1,
    "output_retry_wait_us": 1000,
    "output_enable_stats": false,
    "is_scan_current": false,
    "reader_spin_count": 1000,
    "rescan_interval_ns": 5000000,
    "rescan_max_interval_ns": 30000000,
    "consumer_cpu": -1,
    "producer_cpu": -1,
    "producer_qos": "user_interactive",
    "round_storage_bytes": 214748364,
    "spsc_buffer_bytes": 268435456,
    "prefault_producer_buffers": true,
    "finish_timeout_ms": 5000,
    "work_wait_min_ms": 1,
    "finish_retry_ms": 1,
    "publish_count": 4294967295,
    "spsc_capacity": 16777216,
    "retry_yield_every": 1024,
    "spsc_idle_spins": 0,
    "spsc_idle_sleep_ns": 10000,
    "timer": "auto",
    "sample_every": 32,
    "max_samples": 1000000,
    "latency_batch_size": 1000,
    "timer_calibration_samples": 16384,
    "call_batch_size": 256,
    "random_seed": 42,
    "timeout_seconds": 180,
    "buffer_budget_bytes": 536870912,
    "use_write_session": false,
    "rigtorp_write_prefetch": false,
    "readerwriterqueue_copy_after_zero": false
  },
  "32 B / two_buf_queue": {
    "transport": "two_buf_queue",
    "mode": "throughput",
    "payload_bytes": 32,
    "messages": 10000000,
    "warmup_messages": 50000,
    "callback_iterations": 2,
    "verify_payload": false,
    "prepared_input": true,
    "variable_payload": true,
    "prepared_input_limit_bytes": 268435456,
    "measure_callback_time": true,
    "producer_interval_ns": 0,
    "source_block_size": 65536,
    "source_pool_min": 4096,
    "source_pool_max": 4096,
    "source_queue_capacity": 16384,
    "writer_backpressure": "drop",
    "writer_spin_count": 1000,
    "writer_wait_timeout_ms": 5000,
    "output_block_size": 65536,
    "output_frame_capacity": 1,
    "output_pool_min": 4096,
    "output_pool_max": 4096,
    "output_queue_capacity": 16384,
    "cancel_claim_mode": "tail",
    "output_mode": "spsc",
    "output_reader_mode": "wait_signal",
    "output_reader_count": 1,
    "output_retry_wait_us": 1000,
    "output_enable_stats": false,
    "is_scan_current": true,
    "reader_spin_count": 10000,
    "rescan_interval_ns": 1000000,
    "rescan_max_interval_ns": 1000000,
    "consumer_cpu": -1,
    "producer_cpu": -1,
    "producer_qos": "user_interactive",
    "round_storage_bytes": 214748364,
    "spsc_buffer_bytes": 268435456,
    "prefault_producer_buffers": true,
    "finish_timeout_ms": 5000,
    "work_wait_min_ms": 1,
    "finish_retry_ms": 1,
    "publish_count": 10,
    "spsc_capacity": 0,
    "retry_yield_every": 1024,
    "spsc_idle_spins": 1000,
    "spsc_idle_sleep_ns": 0,
    "timer": "auto",
    "sample_every": 32,
    "max_samples": 1000000,
    "latency_batch_size": 1000,
    "timer_calibration_samples": 16384,
    "call_batch_size": 256,
    "random_seed": 42,
    "timeout_seconds": 180,
    "buffer_budget_bytes": 536870912,
    "use_write_session": false,
    "rigtorp_write_prefetch": false,
    "readerwriterqueue_copy_after_zero": false
  },
  "32 B / readerwriterqueue": {
    "transport": "readerwriterqueue",
    "mode": "throughput",
    "payload_bytes": 32,
    "messages": 10000000,
    "warmup_messages": 50000,
    "callback_iterations": 2,
    "verify_payload": false,
    "prepared_input": true,
    "variable_payload": true,
    "prepared_input_limit_bytes": 268435456,
    "measure_callback_time": true,
    "producer_interval_ns": 0,
    "source_block_size": 65536,
    "source_pool_min": 4096,
    "source_pool_max": 4096,
    "source_queue_capacity": 16384,
    "writer_backpressure": "drop",
    "writer_spin_count": 1000,
    "writer_wait_timeout_ms": 5000,
    "output_block_size": 65536,
    "output_frame_capacity": 64,
    "output_pool_min": 4096,
    "output_pool_max": 4096,
    "output_queue_capacity": 16384,
    "cancel_claim_mode": "tail",
    "output_mode": "spsc",
    "output_reader_mode": "wait_signal",
    "output_reader_count": 1,
    "output_retry_wait_us": 1000,
    "output_enable_stats": false,
    "is_scan_current": false,
    "reader_spin_count": 10000,
    "rescan_interval_ns": 5000000,
    "rescan_max_interval_ns": 30000000,
    "consumer_cpu": -1,
    "producer_cpu": -1,
    "producer_qos": "user_interactive",
    "round_storage_bytes": 214748364,
    "spsc_buffer_bytes": 268435456,
    "prefault_producer_buffers": true,
    "finish_timeout_ms": 5000,
    "work_wait_min_ms": 1,
    "finish_retry_ms": 1,
    "publish_count": 4294967295,
    "spsc_capacity": 8371713,
    "retry_yield_every": 1024,
    "spsc_idle_spins": 0,
    "spsc_idle_sleep_ns": 1000,
    "timer": "auto",
    "sample_every": 32,
    "max_samples": 1000000,
    "latency_batch_size": 1000,
    "timer_calibration_samples": 16384,
    "call_batch_size": 256,
    "random_seed": 42,
    "timeout_seconds": 180,
    "buffer_budget_bytes": 536870912,
    "use_write_session": false,
    "rigtorp_write_prefetch": false,
    "readerwriterqueue_copy_after_zero": true
  },
  "32 B / rigtorp": {
    "transport": "rigtorp",
    "mode": "throughput",
    "payload_bytes": 32,
    "messages": 10000000,
    "warmup_messages": 50000,
    "callback_iterations": 2,
    "verify_payload": false,
    "prepared_input": true,
    "variable_payload": true,
    "prepared_input_limit_bytes": 268435456,
    "measure_callback_time": true,
    "producer_interval_ns": 0,
    "source_block_size": 65536,
    "source_pool_min": 4096,
    "source_pool_max": 4096,
    "source_queue_capacity": 16384,
    "writer_backpressure": "drop",
    "writer_spin_count": 1000,
    "writer_wait_timeout_ms": 5000,
    "output_block_size": 65536,
    "output_frame_capacity": 64,
    "output_pool_min": 4096,
    "output_pool_max": 4096,
    "output_queue_capacity": 16384,
    "cancel_claim_mode": "tail",
    "output_mode": "spsc",
    "output_reader_mode": "wait_signal",
    "output_reader_count": 1,
    "output_retry_wait_us": 1000,
    "output_enable_stats": false,
    "is_scan_current": false,
    "reader_spin_count": 10000,
    "rescan_interval_ns": 5000000,
    "rescan_max_interval_ns": 30000000,
    "consumer_cpu": -1,
    "producer_cpu": -1,
    "producer_qos": "user_interactive",
    "round_storage_bytes": 214748364,
    "spsc_buffer_bytes": 268435456,
    "prefault_producer_buffers": true,
    "finish_timeout_ms": 5000,
    "work_wait_min_ms": 1,
    "finish_retry_ms": 1,
    "publish_count": 4294967295,
    "spsc_capacity": 8388603,
    "retry_yield_every": 1024,
    "spsc_idle_spins": 0,
    "spsc_idle_sleep_ns": 1000,
    "timer": "auto",
    "sample_every": 32,
    "max_samples": 1000000,
    "latency_batch_size": 1000,
    "timer_calibration_samples": 16384,
    "call_batch_size": 256,
    "random_seed": 42,
    "timeout_seconds": 180,
    "buffer_budget_bytes": 536870912,
    "use_write_session": false,
    "rigtorp_write_prefetch": true,
    "readerwriterqueue_copy_after_zero": false
  },
  "32 B / atomic_queue": {
    "transport": "atomic_queue",
    "mode": "throughput",
    "payload_bytes": 32,
    "messages": 10000000,
    "warmup_messages": 50000,
    "callback_iterations": 2,
    "verify_payload": false,
    "prepared_input": true,
    "variable_payload": true,
    "prepared_input_limit_bytes": 268435456,
    "measure_callback_time": true,
    "producer_interval_ns": 0,
    "source_block_size": 65536,
    "source_pool_min": 4096,
    "source_pool_max": 4096,
    "source_queue_capacity": 16384,
    "writer_backpressure": "drop",
    "writer_spin_count": 1000,
    "writer_wait_timeout_ms": 5000,
    "output_block_size": 65536,
    "output_frame_capacity": 64,
    "output_pool_min": 4096,
    "output_pool_max": 4096,
    "output_queue_capacity": 16384,
    "cancel_claim_mode": "tail",
    "output_mode": "spsc",
    "output_reader_mode": "wait_signal",
    "output_reader_count": 1,
    "output_retry_wait_us": 1000,
    "output_enable_stats": false,
    "is_scan_current": false,
    "reader_spin_count": 10000,
    "rescan_interval_ns": 5000000,
    "rescan_max_interval_ns": 30000000,
    "consumer_cpu": -1,
    "producer_cpu": -1,
    "producer_qos": "user_interactive",
    "round_storage_bytes": 214748364,
    "spsc_buffer_bytes": 268435456,
    "prefault_producer_buffers": true,
    "finish_timeout_ms": 5000,
    "work_wait_min_ms": 1,
    "finish_retry_ms": 1,
    "publish_count": 4294967295,
    "spsc_capacity": 8388608,
    "retry_yield_every": 1024,
    "spsc_idle_spins": 0,
    "spsc_idle_sleep_ns": 10000,
    "timer": "auto",
    "sample_every": 32,
    "max_samples": 1000000,
    "latency_batch_size": 1000,
    "timer_calibration_samples": 16384,
    "call_batch_size": 256,
    "random_seed": 42,
    "timeout_seconds": 180,
    "buffer_budget_bytes": 536870912,
    "use_write_session": false,
    "rigtorp_write_prefetch": false,
    "readerwriterqueue_copy_after_zero": false
  },
  "64 B / two_buf_queue": {
    "transport": "two_buf_queue",
    "mode": "throughput",
    "payload_bytes": 64,
    "messages": 10000000,
    "warmup_messages": 50000,
    "callback_iterations": 4,
    "verify_payload": false,
    "prepared_input": true,
    "variable_payload": true,
    "prepared_input_limit_bytes": 268435456,
    "measure_callback_time": true,
    "producer_interval_ns": 0,
    "source_block_size": 1048576,
    "source_pool_min": 256,
    "source_pool_max": 256,
    "source_queue_capacity": 1024,
    "writer_backpressure": "drop",
    "writer_spin_count": 1000,
    "writer_wait_timeout_ms": 5000,
    "output_block_size": 1048576,
    "output_frame_capacity": 1,
    "output_pool_min": 256,
    "output_pool_max": 256,
    "output_queue_capacity": 1024,
    "cancel_claim_mode": "tail",
    "output_mode": "spsc",
    "output_reader_mode": "wait_signal",
    "output_reader_count": 1,
    "output_retry_wait_us": 1000,
    "output_enable_stats": false,
    "is_scan_current": true,
    "reader_spin_count": 10000,
    "rescan_interval_ns": 1000000,
    "rescan_max_interval_ns": 1000000,
    "consumer_cpu": -1,
    "producer_cpu": -1,
    "producer_qos": "user_interactive",
    "round_storage_bytes": 214748364,
    "spsc_buffer_bytes": 268435456,
    "prefault_producer_buffers": true,
    "finish_timeout_ms": 5000,
    "work_wait_min_ms": 1,
    "finish_retry_ms": 1,
    "publish_count": 10,
    "spsc_capacity": 0,
    "retry_yield_every": 1024,
    "spsc_idle_spins": 1000,
    "spsc_idle_sleep_ns": 0,
    "timer": "auto",
    "sample_every": 32,
    "max_samples": 1000000,
    "latency_batch_size": 1000,
    "timer_calibration_samples": 16384,
    "call_batch_size": 256,
    "random_seed": 42,
    "timeout_seconds": 180,
    "buffer_budget_bytes": 536870912,
    "use_write_session": false,
    "rigtorp_write_prefetch": false,
    "readerwriterqueue_copy_after_zero": false
  },
  "64 B / readerwriterqueue": {
    "transport": "readerwriterqueue",
    "mode": "throughput",
    "payload_bytes": 64,
    "messages": 10000000,
    "warmup_messages": 50000,
    "callback_iterations": 4,
    "verify_payload": false,
    "prepared_input": true,
    "variable_payload": true,
    "prepared_input_limit_bytes": 268435456,
    "measure_callback_time": true,
    "producer_interval_ns": 0,
    "source_block_size": 262144,
    "source_pool_min": 1024,
    "source_pool_max": 1024,
    "source_queue_capacity": 4096,
    "writer_backpressure": "drop",
    "writer_spin_count": 1000,
    "writer_wait_timeout_ms": 5000,
    "output_block_size": 262144,
    "output_frame_capacity": 64,
    "output_pool_min": 1024,
    "output_pool_max": 1024,
    "output_queue_capacity": 4096,
    "cancel_claim_mode": "tail",
    "output_mode": "spsc",
    "output_reader_mode": "wait_signal",
    "output_reader_count": 1,
    "output_retry_wait_us": 1000,
    "output_enable_stats": false,
    "is_scan_current": false,
    "reader_spin_count": 10000,
    "rescan_interval_ns": 5000000,
    "rescan_max_interval_ns": 30000000,
    "consumer_cpu": -1,
    "producer_cpu": -1,
    "producer_qos": "user_interactive",
    "round_storage_bytes": 214748364,
    "spsc_buffer_bytes": 268435456,
    "prefault_producer_buffers": true,
    "finish_timeout_ms": 5000,
    "work_wait_min_ms": 1,
    "finish_retry_ms": 1,
    "publish_count": 4294967295,
    "spsc_capacity": 4185601,
    "retry_yield_every": 1024,
    "spsc_idle_spins": 0,
    "spsc_idle_sleep_ns": 1000,
    "timer": "auto",
    "sample_every": 32,
    "max_samples": 1000000,
    "latency_batch_size": 1000,
    "timer_calibration_samples": 16384,
    "call_batch_size": 256,
    "random_seed": 42,
    "timeout_seconds": 180,
    "buffer_budget_bytes": 536870912,
    "use_write_session": false,
    "rigtorp_write_prefetch": false,
    "readerwriterqueue_copy_after_zero": false
  },
  "64 B / rigtorp": {
    "transport": "rigtorp",
    "mode": "throughput",
    "payload_bytes": 64,
    "messages": 10000000,
    "warmup_messages": 50000,
    "callback_iterations": 4,
    "verify_payload": false,
    "prepared_input": true,
    "variable_payload": true,
    "prepared_input_limit_bytes": 268435456,
    "measure_callback_time": true,
    "producer_interval_ns": 0,
    "source_block_size": 262144,
    "source_pool_min": 1024,
    "source_pool_max": 1024,
    "source_queue_capacity": 4096,
    "writer_backpressure": "drop",
    "writer_spin_count": 1000,
    "writer_wait_timeout_ms": 5000,
    "output_block_size": 262144,
    "output_frame_capacity": 64,
    "output_pool_min": 1024,
    "output_pool_max": 1024,
    "output_queue_capacity": 4096,
    "cancel_claim_mode": "tail",
    "output_mode": "spsc",
    "output_reader_mode": "wait_signal",
    "output_reader_count": 1,
    "output_retry_wait_us": 1000,
    "output_enable_stats": false,
    "is_scan_current": false,
    "reader_spin_count": 10000,
    "rescan_interval_ns": 5000000,
    "rescan_max_interval_ns": 30000000,
    "consumer_cpu": -1,
    "producer_cpu": -1,
    "producer_qos": "user_interactive",
    "round_storage_bytes": 214748364,
    "spsc_buffer_bytes": 268435456,
    "prefault_producer_buffers": true,
    "finish_timeout_ms": 5000,
    "work_wait_min_ms": 1,
    "finish_retry_ms": 1,
    "publish_count": 4294967295,
    "spsc_capacity": 4194301,
    "retry_yield_every": 1024,
    "spsc_idle_spins": 0,
    "spsc_idle_sleep_ns": 0,
    "timer": "auto",
    "sample_every": 32,
    "max_samples": 1000000,
    "latency_batch_size": 1000,
    "timer_calibration_samples": 16384,
    "call_batch_size": 256,
    "random_seed": 42,
    "timeout_seconds": 180,
    "buffer_budget_bytes": 536870912,
    "use_write_session": false,
    "rigtorp_write_prefetch": true,
    "readerwriterqueue_copy_after_zero": false
  },
  "64 B / atomic_queue": {
    "transport": "atomic_queue",
    "mode": "throughput",
    "payload_bytes": 64,
    "messages": 10000000,
    "warmup_messages": 50000,
    "callback_iterations": 4,
    "verify_payload": false,
    "prepared_input": true,
    "variable_payload": true,
    "prepared_input_limit_bytes": 268435456,
    "measure_callback_time": true,
    "producer_interval_ns": 0,
    "source_block_size": 262144,
    "source_pool_min": 1024,
    "source_pool_max": 1024,
    "source_queue_capacity": 4096,
    "writer_backpressure": "drop",
    "writer_spin_count": 1000,
    "writer_wait_timeout_ms": 5000,
    "output_block_size": 262144,
    "output_frame_capacity": 64,
    "output_pool_min": 1024,
    "output_pool_max": 1024,
    "output_queue_capacity": 4096,
    "cancel_claim_mode": "tail",
    "output_mode": "spsc",
    "output_reader_mode": "wait_signal",
    "output_reader_count": 1,
    "output_retry_wait_us": 1000,
    "output_enable_stats": false,
    "is_scan_current": false,
    "reader_spin_count": 10000,
    "rescan_interval_ns": 5000000,
    "rescan_max_interval_ns": 30000000,
    "consumer_cpu": -1,
    "producer_cpu": -1,
    "producer_qos": "user_interactive",
    "round_storage_bytes": 214748364,
    "spsc_buffer_bytes": 268435456,
    "prefault_producer_buffers": true,
    "finish_timeout_ms": 5000,
    "work_wait_min_ms": 1,
    "finish_retry_ms": 1,
    "publish_count": 4294967295,
    "spsc_capacity": 4194304,
    "retry_yield_every": 1024,
    "spsc_idle_spins": 0,
    "spsc_idle_sleep_ns": 10000,
    "timer": "auto",
    "sample_every": 32,
    "max_samples": 1000000,
    "latency_batch_size": 1000,
    "timer_calibration_samples": 16384,
    "call_batch_size": 256,
    "random_seed": 42,
    "timeout_seconds": 180,
    "buffer_budget_bytes": 536870912,
    "use_write_session": false,
    "rigtorp_write_prefetch": false,
    "readerwriterqueue_copy_after_zero": false
  }
}
生成于 2026-10-11T11:17:20.030789+08:00 · 共 160 次正式运行,16 次负载校验,0 次回调校准。
编译器:Clang 18.1.8
被测程序 SHA-256:d1194d84f55ad72ea9a0445bfba2d1bbedab8953ff494b928b23334856386e23

第三方原文件按 benchmarks/spsc/spsc_dependencies.json 校验,未修改队列实现;外部 Payload 的复制策略为 完整负载复制;rigtorp 可选目标写预取,ReaderWriterQueue 可选先清零再 memcpy,复制完整负载。逐次命令、配置、校验结果与内部计数保存在 raw.jsonl。