Does D have too many features?
bearophile
bearophileHUGS at lycos.com
Sat Apr 28 16:42:05 PDT 2012
Jonathan M Davis:
>> - 'in' operator returning a pointer to the element.
>
> Really? I use that all the time with AAs. Without that, you
> would have to do
> two lookups to get an object which might not be in the
> container, so it would be less efficient.
LDC1 compiler introduced a small optimization, it looks for
nearby associative array lookups and removes the second of them
where possible. In my code I have seen this frees me to use "in"
nearby followed by [], with the same efficiency of a single AA
lookup. With this small optimization, D "in" is free to return a
more clean boolean.
This optimization doesn't work if you want to store the pointer
returned by "in" to use it later, but in my code this pattern
doesn't happen, I think it's quite uncommon.
Java/JavaScript/Lua show that the language design has to focus on
what's hard to optimize away for the compiler, like offering ways
to the programmer to specify higher level semantics (like
asserting: foo(a,b) is equal to foo(b,a)), instead of focusing on
what a not dumb static compiler (not even a JIT) is able to
optimize away.
Bye,
bearophile
More information about the Digitalmars-d
mailing list