On Friday, 27 April 2012 at 22:40:46 UTC, H. S. Teoh wrote:
I recommend the opposite, actually. Most D code by default should be @safe (don't know about nothrow though). It's good to mark most things as @safe and pure, and let the compiler catch careless mistakes.

 Your probably right..

Dynamic arrays are always passed by reference (i.e. fat pointer). AFAIK the compiler does not change this just because of certain tags on the function.

That's why i wasn't sure... I was pretty sure it was passed via fat pointer but if adding @safe and pure makes it slower, something else is going on. Perhaps just a ton more checks to make sure it doesn't during debug mode?

No, that's wrong. The compiler checks the code at runtime to prevent impure code from slipping into the binary. It does not do anything to
"patch over" impure code to make it pure.

I'm not going to argue, I don't know enough about the D compiler to know exactly what's going on; Plus I'd rather be wrong than right :)

I guess use a profiler and check where your bottlenecks are. The results may surprise you. I've only glanced over the code so I can't offer anything more concrete.

Reply via email to