Performance dmd vs ldc2
Chris
wendlec at tcd.ie
Wed Jul 31 04:32:59 PDT 2013
On Wednesday, 31 July 2013 at 11:13:13 UTC, John Colvin wrote:
> 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.
Thanks. I've just tried it. In dmd it's there as:
00000000 <_D10xmlparser25parseFZv>:
[...]
In ldc too, looks only a bit different. There are:
000002b0 <_D10xmlparser25parseFZv>:
[...]
00000b60
<_D10xmlparser25parseFZv9__lambda1MFC3std3xml13ElementParserZv>:
[...]
More information about the digitalmars-d-ldc
mailing list