class templates and static if
Ali Çehreli
acehreli at yahoo.com
Mon Feb 27 14:17:29 PST 2012
On 02/27/2012 02:06 PM, Jonathan M Davis wrote:
> I'm not saying that dmd doesn't ever optimize switch statements. I'm just
> saying that as I understand it, it doesn't always do so (its
performance with
> ranged case statements isn't great for instance). Odds are that it _does_
> optimize straight integer case statements fairly well, because that's the
> classic C stuff (and if you've verified that, all the better - I
haven't).
I have played with this optimization recently. (Could be dmd 2.057.) No,
dmd did not optimize a straightforward switch statement over a ubyte
expression with about two hundred ubyte cases.
The assembly contained conditional jump statements, not a table. And
yes, I did try with -O.
But I am not sure that a lookup table really is an optimization with
modern CPUs. A series of conditional jumps that fit the CPU's cache
could be faster than a table that's outside of the cache. I think
accessing the cache is hundreds of times faster than accessing memory
outside of the cache.
Ali
More information about the Digitalmars-d-learn
mailing list