TWOBUFQUEUE / PERFORMANCE NOTES

8 MiB 缓存 · 回调循环为 0 · 单块 Session 双重循环

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

10 百万条 / 次5 次平均 / 指标8 B / 16 B / 32 B / 64 Bpublish_count = 4294967295不逐条 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 的第一层与第二层各 8 MiB,合计 16 MiB;三种开源 SPSC 请求 8 MiB。ReaderWriterQueue 会按内部块容量略微取整。

每条消息的模拟业务循环为 0;仍保留逐消息回调、序号/条数校验和队列自身的消费工作。

本次是普通 write 与单块 Session 的同参数对照,没有重新寻优。吞吐和各延时指标使用同一构造配置。

同缓存的两份报告共享本次实测的开源对照数据;没有使用历史成绩。

每层数据池严格为 8 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 保留成员复制。清零和复制均在写入计时内。各实现的调用端优化在行标签和完整参数中公开,不能把所有差异归因于队列算法。

get_current_session → 内层逐条写 → 空间不足退出 → 外层 get_next_session。获取、等待、换块与 Session 状态归还包含在写入计时中。分组延时跨块继续计时,没有在块边界提前结束计时组。

不主动 flush;flush 只发布位置,不切换 block。每轮尾部在计时外 finish_block,最后一轮 finish,关闭 current 扫描也能收齐尾部。

本轮全部重新测量于提交 f698f25:只取消测试框架六个 lambda 的强制内联,Writer::write 的内联和库代码保持原样。8 B 回退的对照、历史源码与结论边界见 docs/performance_data/twobufqueue_8b_regression_20261011;本轮没有使用历史成绩替换。

本轮合计 400 次独立正式测量、40 次完整负载/FIFO 校验、45 次回调校准;同缓存的普通 write 与 Session 共享本轮开源数据,因此四份报告显示的运行次数不可直接相加。

消息长度
8 B吞吐 · M条/s
TwoBufQueue
2,383.04
ReaderWriterQueue
813.31
rigtorp/SPSCQueue
323.04
atomic_queue
189.29
16 B吞吐 · M条/s
TwoBufQueue
1,927.70
ReaderWriterQueue
681.12
rigtorp/SPSCQueue
317.50
atomic_queue
126.00
32 B吞吐 · M条/s
TwoBufQueue
1,165.02
ReaderWriterQueue
498.11
rigtorp/SPSCQueue
258.44
atomic_queue
86.24
64 B吞吐 · M条/s
TwoBufQueue
590.62
ReaderWriterQueue
242.06
rigtorp/SPSCQueue
161.12
atomic_queue
69.86

吞吐与写入耗时

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

实现吞吐
M条/s · 下方为范围
有效负载
GB/s
p50
ns / 次
p99
ns / 次
p999
ns / 次
回调区间 / 写入
墙钟时间比
回调循环
次 / 消息
分轮
轮 / 运行
8 B回调循环 0 次 · 每次 12 轮 · 10,000,000 条
TwoBufQueueWriteSession · 固定长度写2,383.042,221.83 – 2,601.9619.0640.3421.5003.4756.66×012
ReaderWriterQueue成员初始化复制813.31706.46 – 880.256.5061.3002.2258.1673.25×012
rigtorp/SPSCQueue成员复制+目标写预取323.04310.61 – 331.722.5842.9175.63312.1251.00×012
atomic_queue成员初始化复制189.29182.22 – 198.911.5145.19210.87523.7501.13×012
16 B回调循环 0 次 · 每次 24 轮 · 10,000,000 条
TwoBufQueueWriteSession · 固定长度写1,927.701,212.56 – 2,560.1930.8430.3421.7504.2586.56×024
ReaderWriterQueue先清零,再 memcpy681.12546.32 – 743.2210.8981.3173.1928.6752.91×024
rigtorp/SPSCQueue成员复制+目标写预取317.50301.27 – 326.975.0803.0176.03311.2751.00×024
atomic_queue成员初始化复制126.00111.58 – 136.032.0166.00824.95038.9001.01×024
32 B回调循环 0 次 · 每次 48 轮 · 10,000,000 条
TwoBufQueueWriteSession · 固定长度写1,165.02760.92 – 1,417.0037.2810.8173.5678.9003.72×048
ReaderWriterQueue先清零,再 memcpy498.11449.77 – 526.7615.9401.88311.54230.0422.14×048
rigtorp/SPSCQueue成员复制+目标写预取258.44230.39 – 280.968.2703.3759.03315.8421.00×048
atomic_queue成员初始化复制86.2472.74 – 91.872.7609.03332.39262.9171.01×048
64 B回调循环 0 次 · 每次 96 轮 · 10,000,000 条
TwoBufQueueWriteSession · 固定长度写590.62493.33 – 741.3637.8001.2754.1508.6752.02×096
ReaderWriterQueue成员初始化复制242.06198.68 – 293.6215.4923.5259.37521.2331.16×096
rigtorp/SPSCQueue成员复制+目标写预取161.12140.49 – 181.6810.3115.45811.96719.8751.00×096
atomic_queue成员初始化复制69.8665.94 – 73.534.47114.78342.45876.7081.01×096

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

回调时间与背压

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

实现写线程
ms
回调区间
ms
受压消息
条 / 次运行
失败尝试
次 / 运行
重试时间
ms
Writer 压力
内部事件
复制层拒绝
内部事件
峰值 RSS
MiB
8 B正式吞吐运行的逐次平均;RSS 为本组最大值
TwoBufQueue4.2227.950.00.00.0000023.3
ReaderWriterQueue12.3639.960.00.00.000——17.2
rigtorp/SPSCQueue30.9731.030.00.00.000——16.1
atomic_queue52.8759.530.00.00.000——17.1
16 B正式吞吐运行的逐次平均;RSS 为本组最大值
TwoBufQueue5.5734.400.00.00.0000024.1
ReaderWriterQueue14.8642.960.00.00.000——16.7
rigtorp/SPSCQueue31.5231.630.00.00.000——16.1
atomic_queue79.7080.860.00.00.000——16.6
32 B正式吞吐运行的逐次平均;RSS 为本组最大值
TwoBufQueue9.0332.160.00.00.0000024.3
ReaderWriterQueue20.1442.960.00.00.000——16.5
rigtorp/SPSCQueue38.8738.960.00.00.000——16.1
atomic_queue116.79117.490.00.00.000——16.4
64 B正式吞吐运行的逐次平均;RSS 为本组最大值
TwoBufQueue17.2934.340.00.00.0000024.4
ReaderWriterQueue42.2748.680.00.00.000——20.2
rigtorp/SPSCQueue62.7262.710.00.00.000——16.2
atomic_queue143.31145.310.00.00.000——16.1

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

逐次测量值

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

8 B5 次原始值 · 回调循环 0 次
实现 / 指标第 1 次第 2 次第 3 次第 4 次第 5 次平均
TwoBufQueue吞吐 M条/s2,248.3922,221.8312,587.9072,601.9642,255.1312,383.045
TwoBufQueuep50 ns0.3330.3750.3330.3330.3330.342
TwoBufQueuep99 ns1.2082.0001.2081.7501.3331.500
TwoBufQueuep999 ns1.8757.5421.9583.6252.3753.475
ReaderWriterQueue吞吐 M条/s813.537837.983880.249828.306706.462813.308
ReaderWriterQueuep50 ns1.2921.2921.2921.2921.3331.300
ReaderWriterQueuep99 ns1.6252.5002.0832.1672.7502.225
ReaderWriterQueuep999 ns3.0835.1257.5427.54217.5428.167
rigtorp/SPSCQueue吞吐 M条/s310.605323.165323.008326.683331.715323.035
rigtorp/SPSCQueuep50 ns2.9582.9172.9172.9172.8752.917
rigtorp/SPSCQueuep99 ns6.9176.9174.2505.7504.3335.633
rigtorp/SPSCQueuep999 ns16.33317.1677.87511.5007.75012.125
atomic_queue吞吐 M条/s182.219189.311186.854189.147198.908189.288
atomic_queuep50 ns5.2924.8755.2085.2925.2925.192
atomic_queuep99 ns17.6258.0008.3757.95812.41710.875
atomic_queuep999 ns30.75020.33321.83314.87530.95823.750
16 B5 次原始值 · 回调循环 0 次
实现 / 指标第 1 次第 2 次第 3 次第 4 次第 5 次平均
TwoBufQueue吞吐 M条/s1,613.8681,212.5622,332.6111,919.2482,560.1931,927.696
TwoBufQueuep50 ns0.3330.3330.3330.3330.3750.342
TwoBufQueuep99 ns1.5421.1673.0001.6671.3751.750
TwoBufQueuep999 ns3.2082.4586.3334.3754.9174.258
ReaderWriterQueue吞吐 M条/s720.504546.319743.216712.420683.140681.120
ReaderWriterQueuep50 ns1.3751.3331.2921.2921.2921.317
ReaderWriterQueuep99 ns3.3755.5422.2082.4582.3753.192
ReaderWriterQueuep999 ns16.45813.0835.3754.3334.1258.675
rigtorp/SPSCQueue吞吐 M条/s322.663319.387326.974317.205301.269317.500
rigtorp/SPSCQueuep50 ns3.0003.0833.0003.0003.0003.017
rigtorp/SPSCQueuep99 ns4.5839.7084.5836.6254.6676.033
rigtorp/SPSCQueuep999 ns7.83324.7086.08310.2927.45811.275
atomic_queue吞吐 M条/s127.532111.578128.517126.325136.028125.996
atomic_queuep50 ns5.7086.0836.1676.0426.0426.008
atomic_queuep99 ns24.54225.50024.95825.70824.04224.950
atomic_queuep999 ns33.54252.95831.83332.91743.25038.900
32 B5 次原始值 · 回调循环 0 次
实现 / 指标第 1 次第 2 次第 3 次第 4 次第 5 次平均
TwoBufQueue吞吐 M条/s1,417.000760.9241,171.7551,386.3531,089.0821,165.023
TwoBufQueuep50 ns0.9170.9580.5830.7500.8750.817
TwoBufQueuep99 ns4.1254.4582.1253.0424.0833.567
TwoBufQueuep999 ns9.91713.2924.9177.0429.3338.900
ReaderWriterQueue吞吐 M条/s522.067494.157449.765526.759497.808498.111
ReaderWriterQueuep50 ns1.7082.3752.0421.6671.6251.883
ReaderWriterQueuep99 ns10.91717.0009.37510.08310.33311.542
ReaderWriterQueuep999 ns11.33399.50017.62511.04210.70830.042
rigtorp/SPSCQueue吞吐 M条/s253.519280.961256.831230.386270.501258.440
rigtorp/SPSCQueuep50 ns3.5003.2503.2923.5423.2923.375
rigtorp/SPSCQueuep99 ns13.7085.5836.45812.6256.7929.033
rigtorp/SPSCQueuep999 ns27.45810.70810.66719.33311.04215.842
atomic_queue吞吐 M条/s89.72691.86989.06772.74087.78186.237
atomic_queuep50 ns9.1679.8758.8758.2509.0009.033
atomic_queuep99 ns33.41745.62527.70825.58329.62532.392
atomic_queuep999 ns72.29283.58354.16732.00072.54262.917
64 B5 次原始值 · 回调循环 0 次
实现 / 指标第 1 次第 2 次第 3 次第 4 次第 5 次平均
TwoBufQueue吞吐 M条/s630.729493.326522.749564.932741.358590.619
TwoBufQueuep50 ns1.1671.1671.5001.2081.3331.275
TwoBufQueuep99 ns3.1253.0005.1674.1255.3334.150
TwoBufQueuep999 ns5.9585.45813.6257.54210.7928.675
ReaderWriterQueue吞吐 M条/s205.331198.684270.353242.311293.620242.060
ReaderWriterQueuep50 ns2.9584.0833.8333.7922.9583.525
ReaderWriterQueuep99 ns7.04213.50012.0008.4175.9179.375
ReaderWriterQueuep999 ns10.91739.16720.95825.7089.41721.233
rigtorp/SPSCQueue吞吐 M条/s174.238165.285143.890140.489181.681161.116
rigtorp/SPSCQueuep50 ns5.4585.5835.5425.7085.0005.458
rigtorp/SPSCQueuep99 ns10.12513.33312.12512.66711.58311.967
rigtorp/SPSCQueuep999 ns16.04218.95819.00022.50022.87519.875
atomic_queue吞吐 M条/s69.33070.70965.94373.53069.81269.865
atomic_queuep50 ns16.83315.75012.75013.08315.50014.783
atomic_queuep99 ns84.33334.54229.75031.50032.16742.458
atomic_queuep999 ns145.25075.91742.66752.91766.79276.708

波动较大的吞吐组:16 B · TwoBufQueue:1,212.56–2,560.19 M条/s;16 B · ReaderWriterQueue:546.32–743.22 M条/s;32 B · TwoBufQueue:760.92–1,417.00 M条/s;32 B · atomic_queue:72.74–91.87 M条/s;64 B · TwoBufQueue:493.33–741.36 M条/s;64 B · ReaderWriterQueue:198.68–293.62 M条/s;64 B · rigtorp/SPSCQueue:140.49–181.68 M条/s。所有测量均保留,未删除低值。

测试口径与复现信息

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

发送、复制与排空

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

按长度使用冻结的发布测试参数;同缓存普通 write 与 Session 使用完全相同的块大小、池容量和读端参数。完整参数如下。四种实现正式写入次数与净负载长度相同。

每轮上限按缓存的 80% / 消息字节数计算。TwoBufQueue 不扫描当前块,publish_count 为 UINT32_MAX;停止发送计时后调用 finish_block 交接当前块,再等待本轮全部回调完成。预热也在计时外交接,最终尾部统一 finish。没有增加额外消息,原生 SPSC 每条已发布,轮末无需额外交接。

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

不逐条 flush · 轮末计时外交接;publish_count 固定为 4294967295。仅预触碰写端数据页,第二层数据页没有额外预触碰。

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

时钟、调度与限制

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

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

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

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

p999 仅供观察:每次延时测量约有 9,918–9,990 个组均值样本,少于框架建议的 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": 0,
    "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": 8,
    "source_pool_max": 8,
    "source_queue_capacity": 32,
    "writer_backpressure": "drop",
    "writer_spin_count": 1000,
    "writer_wait_timeout_ms": 5000,
    "output_block_size": 1048576,
    "output_frame_capacity": 1024,
    "output_pool_min": 8,
    "output_pool_max": 8,
    "output_queue_capacity": 32,
    "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": 6710886,
    "spsc_buffer_bytes": 8388608,
    "prefault_producer_buffers": true,
    "finish_timeout_ms": 5000,
    "work_wait_min_ms": 1,
    "finish_retry_ms": 1,
    "publish_count": 4294967295,
    "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": 16777216,
    "use_write_session": true,
    "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": 0,
    "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": 8,
    "source_pool_max": 8,
    "source_queue_capacity": 32,
    "writer_backpressure": "drop",
    "writer_spin_count": 1000,
    "writer_wait_timeout_ms": 5000,
    "output_block_size": 1048576,
    "output_frame_capacity": 1024,
    "output_pool_min": 8,
    "output_pool_max": 8,
    "output_queue_capacity": 32,
    "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": 6710886,
    "spsc_buffer_bytes": 8388608,
    "prefault_producer_buffers": true,
    "finish_timeout_ms": 5000,
    "work_wait_min_ms": 1,
    "finish_retry_ms": 1,
    "publish_count": 4294967295,
    "spsc_capacity": 1046017,
    "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": 16777216,
    "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": 0,
    "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": 8,
    "source_pool_max": 8,
    "source_queue_capacity": 32,
    "writer_backpressure": "drop",
    "writer_spin_count": 1000,
    "writer_wait_timeout_ms": 5000,
    "output_block_size": 1048576,
    "output_frame_capacity": 1024,
    "output_pool_min": 8,
    "output_pool_max": 8,
    "output_queue_capacity": 32,
    "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": 6710886,
    "spsc_buffer_bytes": 8388608,
    "prefault_producer_buffers": true,
    "finish_timeout_ms": 5000,
    "work_wait_min_ms": 1,
    "finish_retry_ms": 1,
    "publish_count": 4294967295,
    "spsc_capacity": 1048559,
    "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": 16777216,
    "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": 0,
    "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": 8,
    "source_pool_max": 8,
    "source_queue_capacity": 32,
    "writer_backpressure": "drop",
    "writer_spin_count": 1000,
    "writer_wait_timeout_ms": 5000,
    "output_block_size": 1048576,
    "output_frame_capacity": 1024,
    "output_pool_min": 8,
    "output_pool_max": 8,
    "output_queue_capacity": 32,
    "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": 6710886,
    "spsc_buffer_bytes": 8388608,
    "prefault_producer_buffers": true,
    "finish_timeout_ms": 5000,
    "work_wait_min_ms": 1,
    "finish_retry_ms": 1,
    "publish_count": 4294967295,
    "spsc_capacity": 1048576,
    "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": 16777216,
    "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": 0,
    "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": 4194304,
    "source_pool_min": 2,
    "source_pool_max": 2,
    "source_queue_capacity": 8,
    "writer_backpressure": "drop",
    "writer_spin_count": 1000,
    "writer_wait_timeout_ms": 5000,
    "output_block_size": 4194304,
    "output_frame_capacity": 64,
    "output_pool_min": 2,
    "output_pool_max": 2,
    "output_queue_capacity": 8,
    "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": 0,
    "rescan_interval_ns": 5000000,
    "rescan_max_interval_ns": 30000000,
    "consumer_cpu": -1,
    "producer_cpu": -1,
    "producer_qos": "user_interactive",
    "round_storage_bytes": 6710886,
    "spsc_buffer_bytes": 8388608,
    "prefault_producer_buffers": true,
    "finish_timeout_ms": 5000,
    "work_wait_min_ms": 1,
    "finish_retry_ms": 1,
    "publish_count": 4294967295,
    "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": 16777216,
    "use_write_session": true,
    "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": 0,
    "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": 8,
    "source_pool_max": 8,
    "source_queue_capacity": 32,
    "writer_backpressure": "drop",
    "writer_spin_count": 1000,
    "writer_wait_timeout_ms": 5000,
    "output_block_size": 1048576,
    "output_frame_capacity": 1024,
    "output_pool_min": 8,
    "output_pool_max": 8,
    "output_queue_capacity": 32,
    "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": 6710886,
    "spsc_buffer_bytes": 8388608,
    "prefault_producer_buffers": true,
    "finish_timeout_ms": 5000,
    "work_wait_min_ms": 1,
    "finish_retry_ms": 1,
    "publish_count": 4294967295,
    "spsc_capacity": 522753,
    "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": 16777216,
    "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": 0,
    "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": 8,
    "source_pool_max": 8,
    "source_queue_capacity": 32,
    "writer_backpressure": "drop",
    "writer_spin_count": 1000,
    "writer_wait_timeout_ms": 5000,
    "output_block_size": 1048576,
    "output_frame_capacity": 1024,
    "output_pool_min": 8,
    "output_pool_max": 8,
    "output_queue_capacity": 32,
    "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": 6710886,
    "spsc_buffer_bytes": 8388608,
    "prefault_producer_buffers": true,
    "finish_timeout_ms": 5000,
    "work_wait_min_ms": 1,
    "finish_retry_ms": 1,
    "publish_count": 4294967295,
    "spsc_capacity": 524279,
    "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": 16777216,
    "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": 0,
    "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": 8,
    "source_pool_max": 8,
    "source_queue_capacity": 32,
    "writer_backpressure": "drop",
    "writer_spin_count": 1000,
    "writer_wait_timeout_ms": 5000,
    "output_block_size": 1048576,
    "output_frame_capacity": 1024,
    "output_pool_min": 8,
    "output_pool_max": 8,
    "output_queue_capacity": 32,
    "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": 6710886,
    "spsc_buffer_bytes": 8388608,
    "prefault_producer_buffers": true,
    "finish_timeout_ms": 5000,
    "work_wait_min_ms": 1,
    "finish_retry_ms": 1,
    "publish_count": 4294967295,
    "spsc_capacity": 524288,
    "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": 16777216,
    "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": 0,
    "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": 4194304,
    "source_pool_min": 2,
    "source_pool_max": 2,
    "source_queue_capacity": 8,
    "writer_backpressure": "drop",
    "writer_spin_count": 1000,
    "writer_wait_timeout_ms": 5000,
    "output_block_size": 4194304,
    "output_frame_capacity": 1,
    "output_pool_min": 2,
    "output_pool_max": 2,
    "output_queue_capacity": 8,
    "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": 0,
    "rescan_interval_ns": 5000000,
    "rescan_max_interval_ns": 30000000,
    "consumer_cpu": -1,
    "producer_cpu": -1,
    "producer_qos": "user_interactive",
    "round_storage_bytes": 6710886,
    "spsc_buffer_bytes": 8388608,
    "prefault_producer_buffers": true,
    "finish_timeout_ms": 5000,
    "work_wait_min_ms": 1,
    "finish_retry_ms": 1,
    "publish_count": 4294967295,
    "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": 16777216,
    "use_write_session": true,
    "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": 0,
    "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": 128,
    "source_pool_max": 128,
    "source_queue_capacity": 512,
    "writer_backpressure": "drop",
    "writer_spin_count": 1000,
    "writer_wait_timeout_ms": 5000,
    "output_block_size": 65536,
    "output_frame_capacity": 1024,
    "output_pool_min": 128,
    "output_pool_max": 128,
    "output_queue_capacity": 512,
    "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": 6710886,
    "spsc_buffer_bytes": 8388608,
    "prefault_producer_buffers": true,
    "finish_timeout_ms": 5000,
    "work_wait_min_ms": 1,
    "finish_retry_ms": 1,
    "publish_count": 4294967295,
    "spsc_capacity": 261121,
    "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": 16777216,
    "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": 0,
    "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": 128,
    "source_pool_max": 128,
    "source_queue_capacity": 512,
    "writer_backpressure": "drop",
    "writer_spin_count": 1000,
    "writer_wait_timeout_ms": 5000,
    "output_block_size": 65536,
    "output_frame_capacity": 1024,
    "output_pool_min": 128,
    "output_pool_max": 128,
    "output_queue_capacity": 512,
    "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": 6710886,
    "spsc_buffer_bytes": 8388608,
    "prefault_producer_buffers": true,
    "finish_timeout_ms": 5000,
    "work_wait_min_ms": 1,
    "finish_retry_ms": 1,
    "publish_count": 4294967295,
    "spsc_capacity": 262139,
    "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": 16777216,
    "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": 0,
    "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": 128,
    "source_pool_max": 128,
    "source_queue_capacity": 512,
    "writer_backpressure": "drop",
    "writer_spin_count": 1000,
    "writer_wait_timeout_ms": 5000,
    "output_block_size": 65536,
    "output_frame_capacity": 1024,
    "output_pool_min": 128,
    "output_pool_max": 128,
    "output_queue_capacity": 512,
    "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": 6710886,
    "spsc_buffer_bytes": 8388608,
    "prefault_producer_buffers": true,
    "finish_timeout_ms": 5000,
    "work_wait_min_ms": 1,
    "finish_retry_ms": 1,
    "publish_count": 4294967295,
    "spsc_capacity": 262144,
    "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": 16777216,
    "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": 0,
    "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": 4194304,
    "source_pool_min": 2,
    "source_pool_max": 2,
    "source_queue_capacity": 8,
    "writer_backpressure": "drop",
    "writer_spin_count": 1000,
    "writer_wait_timeout_ms": 5000,
    "output_block_size": 4194304,
    "output_frame_capacity": 1024,
    "output_pool_min": 2,
    "output_pool_max": 2,
    "output_queue_capacity": 8,
    "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": 30000000,
    "rescan_max_interval_ns": 30000000,
    "consumer_cpu": -1,
    "producer_cpu": -1,
    "producer_qos": "user_interactive",
    "round_storage_bytes": 6710886,
    "spsc_buffer_bytes": 8388608,
    "prefault_producer_buffers": true,
    "finish_timeout_ms": 5000,
    "work_wait_min_ms": 1,
    "finish_retry_ms": 1,
    "publish_count": 4294967295,
    "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": 16777216,
    "use_write_session": true,
    "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": 0,
    "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": 128,
    "source_pool_max": 128,
    "source_queue_capacity": 512,
    "writer_backpressure": "drop",
    "writer_spin_count": 1000,
    "writer_wait_timeout_ms": 5000,
    "output_block_size": 65536,
    "output_frame_capacity": 1024,
    "output_pool_min": 128,
    "output_pool_max": 128,
    "output_queue_capacity": 512,
    "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": 6710886,
    "spsc_buffer_bytes": 8388608,
    "prefault_producer_buffers": true,
    "finish_timeout_ms": 5000,
    "work_wait_min_ms": 1,
    "finish_retry_ms": 1,
    "publish_count": 4294967295,
    "spsc_capacity": 130305,
    "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": 16777216,
    "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": 0,
    "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": 128,
    "source_pool_max": 128,
    "source_queue_capacity": 512,
    "writer_backpressure": "drop",
    "writer_spin_count": 1000,
    "writer_wait_timeout_ms": 5000,
    "output_block_size": 65536,
    "output_frame_capacity": 1024,
    "output_pool_min": 128,
    "output_pool_max": 128,
    "output_queue_capacity": 512,
    "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": 6710886,
    "spsc_buffer_bytes": 8388608,
    "prefault_producer_buffers": true,
    "finish_timeout_ms": 5000,
    "work_wait_min_ms": 1,
    "finish_retry_ms": 1,
    "publish_count": 4294967295,
    "spsc_capacity": 131069,
    "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": 16777216,
    "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": 0,
    "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": 128,
    "source_pool_max": 128,
    "source_queue_capacity": 512,
    "writer_backpressure": "drop",
    "writer_spin_count": 1000,
    "writer_wait_timeout_ms": 5000,
    "output_block_size": 65536,
    "output_frame_capacity": 1024,
    "output_pool_min": 128,
    "output_pool_max": 128,
    "output_queue_capacity": 512,
    "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": 6710886,
    "spsc_buffer_bytes": 8388608,
    "prefault_producer_buffers": true,
    "finish_timeout_ms": 5000,
    "work_wait_min_ms": 1,
    "finish_retry_ms": 1,
    "publish_count": 4294967295,
    "spsc_capacity": 131072,
    "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": 16777216,
    "use_write_session": false,
    "rigtorp_write_prefetch": false,
    "readerwriterqueue_copy_after_zero": false
  }
}
生成于 2026-10-11T11:00:47.224397+08:00 · 共 160 次正式运行,16 次负载校验,0 次回调校准。
编译器:Clang 18.1.8
被测程序 SHA-256:a229326cc6898487c8603758696f23484e0a611e6a2f51e4b580528a0a3909c7

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