用途:为 nubjs.com 的博客文章、文档页面和社交帖制作性能条形图,图形与首页 <Bench> 面板共用一套视觉系统。
主要能力:提供 pairedChart(同一测量在两种条件下的对比,如 node 与 nub)、overlapChart(时间类比较,快者叠在慢者内)、rankedChart(跨工具排名,可选分组)三种图形形式;输出 light/dark/opaque 三份 SVG(writeChart),通过 <Figure darkSrc> 接入 MDX。
使用方式:先在 tests/bench/<family>/ 下编写或找到基准,使其按测量打印机器可读行(运行时脚本每格打印一行 ROW {…}),把一次运行保存为 results/<date>.json;再写一个放在临时目录的一次性生成器读取该文件并调用 scripts/chart.mjs;随后用 rsvg-convert -z 2 -b '#faf7f0' in.svg -o out.png 栅格化并查看,暗色用 -b '#100f0d';最后把三份 SVG 放入 site/public/blog/ 并接入 MDX。published assets 放 site/public/blog/(扁平、无子目录),Figure 组件在 site/src/components/figure.tsx,渲染器为 scripts/chart.mjs。
六条规则:每图只用一个方向;图内不放脚注和说明行;图例左对齐于条形列并独占一行;文字尽量精简;留白需光学平衡(PAD_X 56px、PAD_Y 30px,边距由行计算而非固定 x);成对图不画坐标轴,单位放在数值标签中。
适用场景:发布性能对比图、社交图(用带背景的 opaque SVG,2x 栅格化)、跨工具排名。
限制:图表是最后一步而非第一步,数字必须来自可追踪的基准与保存的运行结果,手工输入数字不可接受;基准应在安静机器与最新 Node 上运行,运行时基准可通过 remote-build --job adhoc 到空闲 VM,Windows 行为用 dispatch-only 工作流与真实 runner 测量;生成器是一次性临时脚本,基准与结果才需纳入版本控制;alt 文本需包含完整数据表;社交图不必放进 site/public/blog/。分类判定依据为生成性能图表与可视化,故归入设计与创作。