Every few months a company publishes a post explaining that it moved a service from Go or from Node to Rust and that the new version is dramatically faster. The comment section then splits into two camps that talk past each other. The first camp treats the result as proof that the old runtime was the problem. The second camp treats it as proof that the team never opened a profiler and paid a large price for a number that was available in the old code all along.
Both camps usually argue from anecdotes, but in this particular argument the anecdotes are unusually well documented. Three documents frame the whole debate, and reading them in order is more useful than reading any single benchmark.
The first is Joel Spolsky’s “Things You Should Never Do, Part I,” published in 2000 and still the standard counter-argument. His subject was Netscape, which threw out a working browser to rewrite it from scratch and lost the market while the rewrite was in progress. The part of the essay that gets quoted less often is the part that matters here, because it is specifically about performance: “When optimizing for speed, 1% of the work gets you 99% of the bang.” The claim is not that rewrites never help. The claim is that a performance problem usually lives in one hot path, and that rewriting an entire service in order to fix one hot path is the most…