TWOBUFQUEUE / PERFORMANCE NOTES

8 MiB 缓存 · 回调循环为 0 · 普通 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 的第一层与第二层各 8 MiB,合计 16 MiB;三种开源 SPSC 请求 8 MiB。ReaderWriterQueue 会按内部块容量略微取整。

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

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

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

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

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,235.94
ReaderWriterQueue
654.07
rigtorp/SPSCQueue
339.42
atomic_queue
187.76
16 B吞吐 · M条/s
TwoBufQueue
1,041.12
ReaderWriterQueue
730.23
rigtorp/SPSCQueue
321.57
atomic_queue
128.79
32 B吞吐 · M条/s
TwoBufQueue
143.26
ReaderWriterQueue
494.79
rigtorp/SPSCQueue
289.65
atomic_queue
84.87
64 B吞吐 · M条/s
TwoBufQueue
125.27
ReaderWriterQueue
312.81
rigtorp/SPSCQueue
166.05
atomic_queue
69.68

吞吐与写入耗时

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

实现吞吐
M条/s · 下方为范围
有效负载
GB/s
p50
ns / 次
p99
ns / 次
p999
ns / 次
回调区间 / 写入
墙钟时间比
回调循环
次 / 消息
分轮
轮 / 运行
8 B回调循环 0 次 · 每次 12 轮 · 10,000,000 条
TwoBufQueue普通 write · 固定长度写1,235.941,226.95 – 1,252.809.8880.7581.4252.6503.49×012
ReaderWriterQueue成员初始化复制654.07519.56 – 713.385.2331.2501.8834.6082.55×012
rigtorp/SPSCQueue成员复制+目标写预取339.42328.64 – 344.622.7152.7924.3508.2421.00×012
atomic_queue成员初始化复制187.76179.88 – 202.031.5024.94210.38326.1081.15×012
16 B回调循环 0 次 · 每次 24 轮 · 10,000,000 条
TwoBufQueue普通 write · 固定长度写1,041.121,001.79 – 1,096.2916.6580.8331.9084.2584.21×024
ReaderWriterQueue先清零,再 memcpy730.23699.79 – 742.8111.6841.2921.9673.6333.05×024
rigtorp/SPSCQueue成员复制+目标写预取321.57314.35 – 326.855.1452.9834.8509.0751.00×024
atomic_queue成员初始化复制128.79125.53 – 132.462.0616.05824.39235.1751.01×024
32 B回调循环 0 次 · 每次 48 轮 · 10,000,000 条
TwoBufQueue普通 write · 固定长度写143.26142.64 – 144.284.5846.51716.55025.9171.34×048
ReaderWriterQueue先清零,再 memcpy494.79456.04 – 535.2815.8331.68310.40812.1752.14×048
rigtorp/SPSCQueue成员复制+目标写预取289.65278.37 – 295.979.2693.0927.02510.0671.00×048
atomic_queue成员初始化复制84.8780.96 – 88.522.7168.58325.05836.2331.00×048
64 B回调循环 0 次 · 每次 96 轮 · 10,000,000 条
TwoBufQueue普通 write · 固定长度写125.27123.28 – 126.328.0177.30818.70027.2671.74×096
ReaderWriterQueue成员初始化复制312.81302.68 – 323.8320.0203.2928.21713.4081.35×096
rigtorp/SPSCQueue成员复制+目标写预取166.05143.29 – 180.7510.6276.21712.61722.1831.00×096
atomic_queue成员初始化复制69.6865.61 – 72.364.45913.33330.13338.9081.02×096

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

回调时间与背压

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

实现写线程
ms
回调区间
ms
受压消息
条 / 次运行
失败尝试
次 / 运行
重试时间
ms
Writer 压力
内部事件
复制层拒绝
内部事件
峰值 RSS
MiB
8 B正式吞吐运行的逐次平均;RSS 为本组最大值
TwoBufQueue8.0928.240.00.00.0000124.4
ReaderWriterQueue15.4938.940.00.00.000——17.1
rigtorp/SPSCQueue29.4729.500.00.00.000——16.1
atomic_queue53.3561.100.00.00.000——17.1
16 B正式吞吐运行的逐次平均;RSS 为本组最大值
TwoBufQueue9.6140.420.00.00.0000830.6
ReaderWriterQueue13.7041.810.00.00.000——16.7
rigtorp/SPSCQueue31.1031.170.00.00.000——16.1
atomic_queue77.6878.580.00.00.000——16.6
32 B正式吞吐运行的逐次平均;RSS 为本组最大值
TwoBufQueue69.8093.240.00.00.0000724.2
ReaderWriterQueue20.2743.280.00.00.000——16.5
rigtorp/SPSCQueue34.5434.590.00.00.000——16.2
atomic_queue117.94118.310.00.00.000——16.5
64 B正式吞吐运行的逐次平均;RSS 为本组最大值
TwoBufQueue79.84138.760.00.00.0000024.2
ReaderWriterQueue31.9843.110.00.00.000——20.2
rigtorp/SPSCQueue60.6060.630.00.00.000——16.2
atomic_queue143.68145.960.00.00.000——16.2

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

逐次测量值

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

8 B5 次原始值 · 回调循环 0 次
实现 / 指标第 1 次第 2 次第 3 次第 4 次第 5 次平均
TwoBufQueue吞吐 M条/s1,227.9291,226.9501,252.7991,235.2861,236.7571,235.944
TwoBufQueuep50 ns0.7500.7500.7920.7500.7500.758
TwoBufQueuep99 ns1.1251.5831.3751.1671.8751.425
TwoBufQueuep999 ns2.2082.5832.7922.6673.0002.650
ReaderWriterQueue吞吐 M条/s519.556665.172713.381677.113695.108654.066
ReaderWriterQueuep50 ns1.2501.2501.2501.2501.2501.250
ReaderWriterQueuep99 ns2.0421.9581.7921.8751.7501.883
ReaderWriterQueuep999 ns5.7505.0833.8334.0004.3754.608
rigtorp/SPSCQueue吞吐 M条/s336.377328.638344.625343.963343.507339.422
rigtorp/SPSCQueuep50 ns2.7922.7922.7922.7922.7922.792
rigtorp/SPSCQueuep99 ns4.3754.6254.1674.3334.2504.350
rigtorp/SPSCQueuep999 ns5.87511.0006.79210.0837.4588.242
atomic_queue吞吐 M条/s179.884182.657189.661184.585202.028187.763
atomic_queuep50 ns4.9174.8754.8335.1674.9174.942
atomic_queuep99 ns10.54211.9179.9179.20810.33310.383
atomic_queuep999 ns26.16731.16725.83322.20825.16726.108
16 B5 次原始值 · 回调循环 0 次
实现 / 指标第 1 次第 2 次第 3 次第 4 次第 5 次平均
TwoBufQueue吞吐 M条/s1,023.8651,027.4851,096.2911,001.7951,056.1891,041.125
TwoBufQueuep50 ns0.7920.8330.8750.8330.8330.833
TwoBufQueuep99 ns1.9172.1252.0421.8751.5831.908
TwoBufQueuep999 ns2.8758.8333.9582.8332.7924.258
ReaderWriterQueue吞吐 M条/s742.813739.476736.797699.788732.274730.230
ReaderWriterQueuep50 ns1.2921.2921.2921.2921.2921.292
ReaderWriterQueuep99 ns2.0002.0001.9171.8752.0421.967
ReaderWriterQueuep999 ns2.9584.4583.9173.0423.7923.633
rigtorp/SPSCQueue吞吐 M条/s323.237314.346320.422322.974326.849321.566
rigtorp/SPSCQueuep50 ns3.0002.9582.9583.0003.0002.983
rigtorp/SPSCQueuep99 ns5.4584.7924.8334.5004.6674.850
rigtorp/SPSCQueuep999 ns13.5839.5837.4587.5007.2509.075
atomic_queue吞吐 M条/s126.493125.529132.462130.235129.207128.785
atomic_queuep50 ns6.0835.9585.9586.1256.1676.058
atomic_queuep99 ns24.25024.45824.45823.79225.00024.392
atomic_queuep999 ns30.95832.41734.04233.58344.87535.175
32 B5 次原始值 · 回调循环 0 次
实现 / 指标第 1 次第 2 次第 3 次第 4 次第 5 次平均
TwoBufQueue吞吐 M条/s142.835142.799142.637143.764144.280143.263
TwoBufQueuep50 ns6.5426.5426.5006.5426.4586.517
TwoBufQueuep99 ns16.75016.54217.00015.62516.83316.550
TwoBufQueuep999 ns25.70826.20826.33325.20826.12525.917
ReaderWriterQueue吞吐 M条/s535.280456.036487.023486.281509.323494.788
ReaderWriterQueuep50 ns1.6251.6671.7921.6671.6671.683
ReaderWriterQueuep99 ns10.29210.16710.79210.50010.29210.408
ReaderWriterQueuep999 ns10.91710.58318.00010.87510.50012.175
rigtorp/SPSCQueue吞吐 M条/s295.969278.372293.338286.395294.197289.654
rigtorp/SPSCQueuep50 ns3.0833.1253.0833.0833.0833.092
rigtorp/SPSCQueuep99 ns6.4587.9586.2506.0838.3757.025
rigtorp/SPSCQueuep999 ns10.12510.9179.0429.37510.87510.067
atomic_queue吞吐 M条/s80.96283.38985.28886.17888.52484.868
atomic_queuep50 ns8.5428.8758.5838.3758.5428.583
atomic_queuep99 ns25.66724.91724.12525.79224.79225.058
atomic_queuep999 ns33.37545.20833.37537.20832.00036.233
64 B5 次原始值 · 回调循环 0 次
实现 / 指标第 1 次第 2 次第 3 次第 4 次第 5 次平均
TwoBufQueue吞吐 M条/s126.320125.680123.275125.385125.668125.266
TwoBufQueuep50 ns7.3337.3337.2927.2927.2927.308
TwoBufQueuep99 ns19.04218.12518.66718.04219.62518.700
TwoBufQueuep999 ns31.33325.04226.58326.00027.37527.267
ReaderWriterQueue吞吐 M条/s323.835302.681311.353309.889316.278312.807
ReaderWriterQueuep50 ns3.7083.4583.0003.2923.0003.292
ReaderWriterQueuep99 ns6.7929.9587.08310.2926.9588.217
ReaderWriterQueuep999 ns10.75019.3339.91716.25010.79213.408
rigtorp/SPSCQueue吞吐 M条/s180.752167.858143.292173.546164.823166.054
rigtorp/SPSCQueuep50 ns5.3758.9585.4175.6255.7086.217
rigtorp/SPSCQueuep99 ns11.00022.2509.7089.95810.16712.617
rigtorp/SPSCQueuep999 ns18.75047.91713.95814.29216.00022.183
atomic_queue吞吐 M条/s69.80672.35771.39565.61369.20969.676
atomic_queuep50 ns14.58313.08313.16712.12513.70813.333
atomic_queuep99 ns30.29230.41730.00029.79230.16730.133
atomic_queuep999 ns43.66733.91740.95839.29236.70838.908

波动较大的吞吐组:8 B · ReaderWriterQueue:519.56–713.38 M条/s;64 B · rigtorp/SPSCQueue:143.29–180.75 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,918–9,994 个组均值样本,少于框架建议的 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": 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": 6710886,
    "spsc_buffer_bytes": 8388608,
    "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": 16777216,
    "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": 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": true,
    "reader_spin_count": 0,
    "rescan_interval_ns": 1000000,
    "rescan_max_interval_ns": 1000000,
    "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": 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": 16777216,
    "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": 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": true,
    "reader_spin_count": 0,
    "rescan_interval_ns": 1000000,
    "rescan_max_interval_ns": 1000000,
    "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": 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": 16777216,
    "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": 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": 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": 6710886,
    "spsc_buffer_bytes": 8388608,
    "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": 16777216,
    "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": 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: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。