Performance dmd vs ldc2

John Colvin john.loughran.colvin at gmail.com
Wed Jul 31 04:13:12 PDT 2013


On Wednesday, 31 July 2013 at 08:44:30 UTC, Chris wrote:
> On Tuesday, 30 July 2013 at 16:43:52 UTC, John Colvin wrote:
>>
>> Are you sure that ldc hasn't actually just optimised away the 
>> whole of parse()?
>> Check to asm to be sure.
>
> I've checked the asm output, as you suggested. Turns out that 
> the DMD version has 94,220 lines and calls parse() for the 
> first time on line 3278 like so:
>
> call	  _D10xmlparser25parseFZv at PC32
>
> The LDC version has 14,347 line and calls parse() for the first 
> time on line 155 like so:
>
> call	  _D10xmlparser25parseFZv
>
> However, I'm no expert on asm so it's anyone's guess but mine. 
> But I'm willing to learn.

I would suggest doing the following:

dmd -c file.d -offiledmd.o
ldc2 -c file.d -of=fileldc.o
objdump -M intel -dr filedmd.o > filedmd.s
objdump -M intel -dr fileldc.o > fileldc.s

Then you'll have all the info you need and hopefully a lot less 
of what you don't need

What you're looking for is the definition of parse, like
0000000000000050 <_D10xmlparser25parseFZv>:

or similar and then seeing if there's anything much in the 
function body below.


More information about the digitalmars-d-ldc mailing list