Steven Schveighoffer wrote:
On Wed, 16 Mar 2011 21:07:54 -0400, Andrei Alexandrescu
<seewebsiteforem...@erdani.org> wrote:
On 03/16/2011 06:45 PM, bearophile wrote:
- It kills inlining (with the current DMD, and I don't think this
problem will be fixed soon);
Not a problem of enforce.
Why can't enforce be this:
T enforce(T, string file = __FILE__, int line = __LINE__)(T value, /* lazy
-- BUG: disables inlining */ const(char)[] msg = null);
Until the compiler is fixed? I bet it would perform better even though
the message may be eagerly constructed. Simply because in 99% of cases
(I've checked) the message is a string literal.
Essentially we keep saying D is on par with C for performance, and then
the standard library is riddled with un-optimizable code making that claim
patently false. It doesn't help to say, "well yeah, I know it's not *now*
but trust me, we know what the problem is and we'll fix it in the next
1-60 months."
I completely agree. If we make statements like "it's OK because it will
be fixed soon" it has to be added to a list and prioritized. With the
understanding that *it knocks something else from that list*. As I've
ended up being the one who implements a large fraction of such things, I
get unhappy when people casually make statements about them being
implemented "soon".