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 03:26:45 PST 2014
On Sunday, 9 February 2014 at 05:29:25 UTC, Walter Bright wrote:
> Ola, I've done it both ways, I actually do know what I'm
> talking about.
Please note that "you" and "they" was meant as "one" or "the c++
community" not personal. It was not ad hominem. So no reason to
be defensive about it. I am grateful if you can point out where
my reasoning fails, then I learn something new.
Maybe you could explain why a single occasional Branch Always
over the unwind-pointer would be slow. Clearly the offset should
be empirically based (so that you usually can avoid the goto),
maybe even set to a separate cache line for some CPUs, and you
could fill out the gaps with other data you need there. It's not
like I have run i7 on Vtune, so I could be wrong, but I don't see
why…
And I also think that if you have a CPU with sufficient number of
callee save registers you can carry along a pointer to the last
try-block stack frame with not much penalty. After all you only
have to restore it if the function ruined it and before calling
new functions that are not inlined and not nothrow, and you could
stick it into a thread local global too where it matters. On 32
bit x86 it probably is quite expensive though.
In code where I write try blocks they tend to stay in the "main
logic function", this cosde is so heavy that adding the stack
frame to a linked list (of stack frames) is a neglectible cost
One really need to be careful when doing performance tests of
exception handling, because it is easy to construct "theoretical"
code. Programmers should write exception handlers with the
implementation in mind, so using existing programs as a base line
is not a good solution either.
> I've sometimes been proven wrong here, so you're welcome to do
> a pull request proving so.
You know very well that I am not going to rewrite codegen for
DMD. Adding this feature will complicate codegen and you need to
understand the code generator well to do the modification.
Besides, I am not sure if a system level language should have
exceptions at all or that I would use them when doing the kind of
stuff I like to use D for. :-P ;-) I like to use exception
handling in application-level code, but not in code for
audio/simulations/buffer-streaming/low-level-stuff.
More information about the Digitalmars-d
mailing list