Bench
Paneflow 用数字而不是形容词来交付性能工作。下面每个套件都在同一台机器上,用仓库里的脚本分别跑已提交的基线和最新提交。终端管线是第一个,更多套件会陆续加入。
- 机器
- AMD Ryzen 7 7800X3D, Windows 11, release profile
- 脚本
- scripts/bench-terminal.sh
- 计量的提交
- e03972c5, 15d7fa5f
终端管线最新运行对比基线
空闲面板的唤醒次数减少 64×。按键回显发布速度提升 20×。
- 机器
- AMD Ryzen 7 7800X3D, Windows 11, release profile
- 脚本
- scripts/bench-terminal.sh
- 计量的提交
- e03972c5, 15d7fa5f
排行榜
指标节省
- 1空闲唤醒,仅显示面板98 % 64.0×
- 2按键回显时发布,220×60 面板95 % 20.0×
- 3读取一行文本,220×60 面板92 % 11.8×
- 4空闲唤醒,停在提示符的 shell86 % 7.11×
- 5零星输出下的发布门控(每 1k 块)75 % 4.00×
- 6语料吞吐量74 % 3.87×
- 7解析基础字体,每帧50 % 2.00×
- 8滚动时发布,120×40 面板50 % 1.98×
- 9滚动时发布,220×60 面板36 % 1.56×
- 10布局遍历,220×60 面板9.9 % 1.11×
全部指标
从 PTY 字节到渲染器绘制的布局:滚动和按键回显时的快照与网格转换、无窗口的布局遍历、渲染线程每帧的查找、零星输出下的发布节奏、语料吞吐量,以及空闲面板的唤醒频率。时间是 release 配置下的中位数,分配计数是精确值。
每个单元格上方为基线,下方为最新:主要数值、有 p95 的指标显示 p95,以及每次迭代的分配。
| 指标 | 数值 | 变化 | p95 | 每次迭代分配 |
|---|---|---|---|---|
| 滚动时发布,220×60 面板 | 基线 700.7 µs最新 448.0 µs | -36.1 %1.56× | 基线 863.6 µs最新 465.7 µs | 基线 2.70 MiB最新 266 B |
| 按键回显时发布,220×60 面板 | 基线 166.0 µs最新 8.3 µs | -95.0 %20.0× | 基线 196.2 µs最新 8.6 µs | 基线 1.41 MiB最新 106 B |
| 滚动时发布,120×40 面板 | 基线 324.8 µs最新 163.8 µs | -49.6 %1.98× | 基线 377.1 µs最新 169.8 µs | 基线 1.02 MiB最新 242 B |
| 布局遍历,220×60 面板 | 基线 515.8 µs最新 464.9 µs | -9.9 %1.11× | 基线 632.3 µs最新 481.3 µs | 基线 164.8 KiB最新 164.8 KiB |
| 读取一行文本,220×60 面板 | 基线 7.1 µs最新 600 ns | -91.5 %11.8× | 基线 9.1 µs最新 600 ns | 基线 4.3 KiB最新 1.9 KiB |
| 解析基础字体,每帧 | 基线 200 ns最新 100 ns | -50.0 %2.00× | 基线 200 ns最新 100 ns | 基线 152 B最新 0 B |
| 读取当前主题,每帧 | 基线 100 ns最新 100 ns | +0.0 %1.00× | 基线 100 ns最新 100 ns | 基线 0 B最新 0 B |
| 零星输出下的发布门控(每 1k 块) | 基线 1k 帧最新 250 帧 | -75.0 %4.00× | 不适用 | 不适用 |
| 语料吞吐量 | 基线 0.2 MiB/s最新 0.9 MiB/s | +287.0 %3.87× | 不适用 | 基线 1.52 MiB最新 2.8 KiB |
| 空闲唤醒,仅显示面板 | 基线 64 次/秒最新 1 次/秒 | -98.4 %64.0× | 不适用 | 不适用 |
| 空闲唤醒,停在提示符的 shell | 基线 64 次/秒最新 9 次/秒 | -85.9 %7.11× | 不适用 | 不适用 |