MLabs Publications
The many minds at MLabs present news, case studies, editorials, tutorials, whitepapers, Cardano Catalyst proposals, and more.
Fast Findings with SWAR and the FFI: The Good, the Bad, and the Inefficient
In this post, we compare three ways to find the first matching byte in an ASCII sequence—naive loops, SWAR (SIMD Within A Register) techniques, and the C memchr via Haskell’s FFI. You’ll learn how each performs in real benchmarks, where FFI can deliver 50× speedups, and why overhead can erase those gains in certain workloads.
The 'A' is for 'Accelerated': Checking ASCII with SWAR
In this post, discover how to push Haskell’s performance boundaries by using SWAR (“SIMD Within A Register”) techniques to validate ASCII data in bulk. You’ll see how packing bytes into registers—using bit masking to flag non-ASCII values in parallel—and unrolling loops to leverage the CPU’s superscalar engine both drive down overhead. By the end, we'll transfer a simple foldl'-based ASCII detecting function into a version running 10x faster.