Prose prompts pad tokens with hedging, transitions, and repeated emphasis. The model has to figure out which parts are constraints vs. context vs. objectives. That parsing overhead is its own tax.
Typed blocks strip that ambiguity. I built github.com/Nyrok/flompt for this: decomposes prompts into 12 semantic blocks (role, objective, constraints, output_format, etc.) and compiles to Claude-optimized XML. Each block tells the model exactly what kind of content it's reading, no guessing.