Your theory about C++ exceptions being more performant than a comparable C pattern doesn't pan
out. It's a similar argument the Java folk give: "Java *can* be faster, because you can do
code optimization on-the-fly".
The extra tooling that C++ must put into function prologs and epilogs--and is mandated by the
various ABIs--for stack unwinding, as a practical matter, adds at least as much work, and
usually more. There are tables to index into--often from within another function which must be
called, and maybe using a pointer dereference. Any one of those can add up to several register
comparisons. I dunno how function inlining effects exception tooling, but I imagine the
relative losses only increase.
For the rare instance where you really need to fine tune a block or routine, both C and C++
suffice. I once shaved 20% runtime by changing a single line--loop to GCC built-in; it was in
C but would've applied equally to C++. In reality, C applications will be moderately faster.
But in most cases we're comparing apples to oranges because, for instance, many people prefer
exceptions. If they improve _your_ ability to engineer better solutions, and don't hinder
others, there is no other justification required. I don't understand why people try so hard to
prove that some feature "tastes better and is less fattening".