

“Clean code means you don’t need performance testing” is the part I’d push back on. Slowdowns aren’t only structural. An innocent-looking change to a cache TTL, a query plan flip after an ORM update, or a dependency bump can regress throughput with zero code smells. Nothing about loops within loops warns you, it just ships slower. So the practical split: load testing in pre-production tells you whether the system meets its numbers today. A benchmark gate in CI tells you that PR didn’t quietly make things 8% worse. Those answer different questions, and you want both. Agreed that unit tests are the wrong tool here, and agreed the simulation should weight operations close to real world splits. The piece I’d add is that the benchmark runs you’re already doing for the gate become your trend line over time, so you’re not starting cold when someone asks why release 4.2 feels slower than 4.1.

Not sure what part read as slop, so I’ll take it at face value: if the complaint is AI-generated filler, fair. Generic performance advice usually is.
The concrete version of the point, no filler: a benchmark gate in CI is only as good as the threshold you feed it. Pick a percentage by measuring your own run to run spread first. Run the same commit five times, look at the gap between fastest and slowest, and set your fail-on-regression number above that noise floor. A threshold inside the noise fails randomly. One way outside it lets real slowdowns through.
That’s the whole trick. Measure the wobble, then gate on it.