Let's take the following micro-benchmark (in Python):
If I replace the Status destructor with a no-op:
then the benchmark result becomes:
This is almost a 30% win. I get similar results on the conversion benchmarks in the benchmark suite.
I'm unsure about the explanation. In the common case, delete _state should be extremely fast, since the state is NULL. Yet, it seems it adds significant overhead. Perhaps because of exception handling?