
← BEAM There, Done That18. Sept. · 1 Std. 11 Min.
Is Your Elixir Code Actually Fast? Tobias Pfeiffer on Benchmarking
<p>Everyone has an opinion about whether the BEAM is fast or slow. Almost nobody has actually measured it properly.</p><p>Tobias Pfeiffer -PragTob on the internet, benchmarking nerd, real-time engineer at Supabase -came to Elixir from Ruby because Ruby couldn't handle WebSockets at scale. Then he learned the language the way he learns every language: by building a benchmarking library. Ten years later, Benchee is what most of the Erlang and Elixir world reaches for when it wants a number instead of an argument.</p><p>Topics include:</p><ul><li><p>why Tobias writes a benchmarking library every time he learns a new language -and what that discipline actually teaches about how a runtime works</p></li><li><p>the production scar: a benchmark that showed one query was faster, deployed it, and discovered the benchmark had been measuring the wrong input entirely</p></li><li><p>the single most important insight about benchmarking: most people quietly fool themselves and walk away more confident and more wrong than when they started</p></li><li><p>inputs as a first-class feature -the lesson José Valim taught Tobias within 17 minutes of an open GitHub issue</p></li><li><p>why body-recursive map is faster than tail-recursive map for small lists on the BEAM -and what that tells you about the runtime</p></li><li><p>what reductions are, why they're a more stable measurement than wall time, and when they diverge</p></li><li><p>how Benchee measures memory: spawning a monitored process, watching GC events, reporting exact bytes -and why deterministic code gives deterministic memory</p></li><li><p>the JSON benchmarking arms race -built-in OTP JSON, jason, Jiffy, and why comparison benchmarks usually miss the point</p></li><li><p>why Benchee has no macros, no DSL, and deliberately only uses functions -and why that design decision made it composable in ways nobody predicted</p></li><li><p>the hardest benchmarking mistake to stop making: confusing latency and throughput</p></li><li><p>what Toby wishes more Elixir developers understood about BEAM performance before they opened a PR claiming something was faster</p></li></ul><p>Recorded August 21, 2026.</p><p><strong>Resources mentioned:</strong></p><ul><li><p>Benchee on Hex: hex.pm/packages/benchee</p></li><li><p>Benchee HTML formatter -self-contained HTML output with downloadable graphs</p></li><li><p>Benchee markdown formatter</p></li><li><p>PragTob on GitHub: github.com/bencheeorg</p></li></ul>