benchmarking

  • The Core Web Vitals, and which of them a backend affects

    Three metrics became a ranking signal in 2020 and two of them are frontend problems, which is worth knowing before a backend team is asked to fix all…

  • A report that was a loop, and the window function it became

    380 MB of memory and a nightly job that could not be run on demand. Running totals and rankings needed a loop before window functions, and the loop…

  • A read replica that was silently stale

    The replica was up, accepting connections and serving data from an hour ago. Seconds_Behind_Master reported zero, honestly, and was measuring the wrong thing.

  • Mutation testing, and the tests that assert nothing

    94% coverage, and a suite that passes with the logic inverted. Coverage measures execution rather than verification, and there is a tool that measures the difference.

  • An SLO is a number somebody agreed to

    Everyone wanted the site to be fast and nobody could say what fast meant. An indicator, an objective and a window — and the error budget is what…

  • Lazy loading arrived in the browser

    One attribute replaces an IntersectionObserver and a library — and applying it to everything makes the Largest Contentful Paint worse rather than better.

  • Equivalent mutants, and why the score is never 100

    Some mutations produce code that behaves identically to the original, so no test can possibly kill them — and they are indistinguishable from real findings without reading each…

  • Apdex, and a number somebody outside engineering can read

    A p99 in milliseconds means nothing to somebody who does not think in latency distributions, and Apdex compresses the same data into a number between zero and one.…

  • A microbenchmark that mostly measures the benchmark

    Timing a function in a loop measures the loop, the opcache state, the CPU frequency scaling and occasionally the garbage collector — and rarely the function. The empty-loop…

  • innodb_buffer_pool_size is the one setting that matters

    Almost every MySQL tuning guide lists forty variables, and on a dedicated server the first one accounts for most of the difference — it is the cache that…