List of Phobos functions that allocate memory?
Ola Fosheim Grøstad" <ola.fosheim.grostad+dlang at gmail.com>
Ola Fosheim Grøstad" <ola.fosheim.grostad+dlang at gmail.com>
Sun Feb 9 00:09:17 PST 2014
On Sunday, 9 February 2014 at 05:57:44 UTC, Jonathan M Davis
wrote:
> Exceptions _will_ be slower than other code paths, and you
> don't want them to
> be the normal code path. Nothing is going to make exceptions as
> fast as the
> normal code paths either. However, D's exceptions are painfully
Just to be pedantic: this is not true.
If you have frame based exception meta-info recording then a
throw out of recursion (without try-blocks in the recursion) will
be faster than normal returns. You unwind down to the try-block
with loading a register and a single JMP. All you have to do is
to maintain a single linked list of stack frames that can catch.
AFAIK the overhead is neglectible if you avoid doing try-blocks
in light-weight function calls. You store one pointer per
catching stack-frame.
That alone is good enough reason to realize that exception
handling strategy should be a compiler switch, not a language
policy. Because performance depends on what kind of code patterns
you have and the architecture.
On current gen of x86 CPUs the decode stage of instructions into
micro ops and pipelineing ought to be heavy enough that simple
BRA instructions "disappear". Thus the offset strategy ought to
work well too (injecting data into the code stream near the
return point and branch over it if necessary, but usually not).
More information about the Digitalmars-d
mailing list