Earlier quoted context omitted.
Every abstraction has a cost somewhere. If you want to use your computer to its full potential, avoid them all.
> Every abstraction has a cost somewhere. It's very simple: (0) Runtime performance degradation is unacceptable. (1) Increased compile times are annoying, but they're tolerable in exchange for more exhaustive automatic static analysis. Anything of interest that the compiler can't prove about my code, I would have to prove myself by hand anyway, which would take even more time than the slowest automated static analysi…
Requirements like these are not grounded in real software use.
In economic terms: a cheaper/slower software can be acceptable over a more expensive/faster software. Example: Java-based software vs. the same written in C++.
In reliability terms: a more robust / slower software can be acceptable over a more expensive/faster software. Example: Erlang-based software vs. C++ software on a network switch.
And so on.
Abstract/absolutist requirements like 'Runtime performance degradation is unacceptable' is not often found in actual software development/use.
Software usually has a multitude of different important qualities. Raw performance is just one of these. Especially one then needs to say what performance exactly and how to measure it. Performance can be measured in many ways: throughput, latency, micro-benchmark speed, etc. etc. Optimizing one (say, throughput) then has effects on others (say, latency). To achieve faster throughput, some functionality can be affected.