.nornir/assets/compressor_bakeoff.svg
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 900 320" font-family="-apple-system,Segoe UI,Roboto,sans-serif" font-size="14">
<defs>
<marker id="co" markerWidth="9" markerHeight="9" refX="7" refY="3" orient="auto">
<path d="M0,0 L7,3 L0,6 Z" fill="#555"/>
</marker>
</defs>
<text x="450" y="28" text-anchor="middle" font-size="17" font-weight="bold" fill="#1a1a1a">The write side — one planner, one gatling pass, four containers</text>
<!-- objects -->
<rect x="30" y="120" width="130" height="70" rx="10" fill="#e7f0ff" stroke="#2b5fb3" stroke-width="2"/>
<text x="95" y="150" text-anchor="middle" font-weight="bold" fill="#1a3a6b">objects</text>
<text x="95" y="170" text-anchor="middle" font-size="12" fill="#33507a">real git store</text>
<text x="95" y="185" text-anchor="middle" font-size="12" fill="#33507a">93.8% < 64 KiB</text>
<!-- plan -->
<rect x="220" y="70" width="180" height="170" rx="10" fill="#fff6e6" stroke="#c8891f" stroke-width="1.5"/>
<text x="310" y="95" text-anchor="middle" font-weight="bold" fill="#7a5410">plan.rs</text>
<text x="310" y="112" text-anchor="middle" font-weight="bold" fill="#7a5410">the two-queue planner</text>
<text x="310" y="138" text-anchor="middle" font-size="12" fill="#7a5410">Batch · < 64 KiB</text>
<text x="310" y="156" text-anchor="middle" font-size="12" fill="#7a5410">Whole · Segment ≥ 4 MiB</text>
<text x="310" y="182" text-anchor="middle" font-size="11" fill="#a06a1a">pure fn of sizes + Config</text>
<text x="310" y="198" text-anchor="middle" font-size="11" fill="#a06a1a">MAX_PIECES 262 144</text>
<!-- pass -->
<rect x="460" y="70" width="200" height="170" rx="10" fill="#eef7ee" stroke="#2f8f46" stroke-width="1.5"/>
<text x="560" y="95" text-anchor="middle" font-weight="bold" fill="#245c30">one no-barrier</text>
<text x="560" y="112" text-anchor="middle" font-weight="bold" fill="#245c30">gatling pass</text>
<text x="560" y="138" text-anchor="middle" font-size="12" fill="#245c30">probe: already compressed?</text>
<text x="560" y="156" text-anchor="middle" font-size="12" fill="#245c30">yes → stored_deflate (memcpy)</text>
<text x="560" y="174" text-anchor="middle" font-size="12" fill="#245c30">no → zlib-rs at level 6</text>
<text x="560" y="198" text-anchor="middle" font-size="11" fill="#3f7a4a">LPT over a shared cursor</text>
<text x="560" y="214" text-anchor="middle" font-size="11" fill="#3f7a4a">no rayon, no private pool</text>
<!-- framing -->
<rect x="720" y="105" width="150" height="100" rx="10" fill="#f0eafc" stroke="#7a4bcf" stroke-width="1.5"/>
<text x="795" y="140" text-anchor="middle" font-weight="bold" fill="#4a2a8a">Container::wrap</text>
<text x="795" y="162" text-anchor="middle" font-size="12" fill="#4a2a8a">zlib · gzip · zip · jar</text>
<text x="795" y="180" text-anchor="middle" font-size="11" fill="#6a4ab0">framing only, no new engine</text>
<line x1="160" y1="155" x2="220" y2="155" stroke="#555" stroke-width="1.5" marker-end="url(#co)"/>
<line x1="400" y1="155" x2="460" y2="155" stroke="#555" stroke-width="1.5" marker-end="url(#co)"/>
<line x1="660" y1="155" x2="720" y2="155" stroke="#555" stroke-width="1.5" marker-end="url(#co)"/>
<text x="450" y="290" text-anchor="middle" font-size="12" fill="#666">byte-identical output at 1 worker and at 32 — the plan never reads the core count</text>
</svg>