Hi,

OK thanks guys. LDC compiled a jump table. The code runs ~15% faster than dmd2, even though checking the ASM it did not inline functions it could have, and core.bitop.bsf compiled to a function call instead of an ASM instruction.

Can you force a function to be inline, and/or make core.bitop.bsf an instruction with ldc? (in the latter case, maybe the last resort is to dip into assembly?)

Steve

On Thursday, 4 April 2013 at 09:51:15 UTC, John Colvin wrote:
On Thursday, 4 April 2013 at 01:06:45 UTC, Steve Kucera wrote:
Hi,

I am using DMD 2.062 on Windows 7 64-bit.

I am writing performance critical functions that need switch statements to use an indirect jump table... current I'm analysing the assembly dump, and the code is compiled to nested ifs instead. This happens with switch and final switch. Is there any way to force the compiler to use a jump table?

Steve

Ldc or gdc may be able to do this for you if dmd cannot.

Other than that, the inline asm in dmd is easy enough to use.


Reply via email to