benchmarking

  • The test that had been quarantined since 2023

    A quarantine list with a deadline, three extensions, and one test covering a payment path that had been skipped for three years.

  • Two years in, and the measurement problem is unchanged

    Eighteen months of trying to say something specific about assisted coding, and the same conclusion as the first attempt. Two years and the honest position is that the…

  • Write latency after dropping an index

    Eleven indexes removed from production tables, and the write path measured before and after. The median saving is trivial and the tail is not, which is the usual…

  • opcache after a year of property hooks

    Two hundred and eighteen methods became properties, and the question of whether the opcode cache noticed. A hook costs about what a method call costs because it is…

  • Writing a PHPUnit extension

    turkerdev/phpunit-json-coverage-report, and a coverage report a machine can read. Coverage as a percentage in a log, and no way to ask which paths changed.

  • The suite at ninety seconds, a year later

    A suite that reached ninety seconds in 2025, measured again after a year of tests being added. Treating suite duration as a budget with a trend rather than…

  • Write latency, before and after eleven indexes

    Eleven reporting indexes dropped from production tables, measured on the write path. The median saving is trivial and the tail is not, which is the usual shape of…

  • opcache preloading, revisited and still not worth it

    A feature evaluated in 2023 and rejected, re-measured in 2025 because the codebase has changed, with the same conclusion. Re-measuring rather than citing the old conclusion is the…

  • Ninety seconds, and what changed about how people work

    A suite at four minutes forty that people ran on push, and at ninety seconds that people run on save. There is a threshold below which running the…

  • A test suite that runs on every commit, in ninety seconds

    Four minutes forty is fine and ninety seconds changes behaviour. The threshold below which running the suite stops being a decision.