Thread overview | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
|
March 11, 2016 dmd-built dmd is faster that ldc-built dmd or gdc-built dmd? | ||||
---|---|---|---|---|
| ||||
Hi, In the process of setting up a new development environment, I noticed that DMD's codegen seems to outperform GDC's or LDC's when building DMD itself. I wrote a test script to measure the time it takes for DMD (built with different compilers) to build Phobos: http://dump.thecybershadow.net/9e42ff2858d1419cf41108cc50b0a83a/bench.sh My results are: dmd: 11.26 ldc: 15.35 gdc: 14.80 Compiler versions: LDC - the LLVM D compiler (0.17.0): based on DMD v2.068.2 and LLVM 3.7.1 gdc (GCC) 5.3.0 GDC/LDC binaries are the ones packaged in Arch Linux. Host DMD is the one installed and chosen by AUTO_BOOTSTRAP (2.068.2). Target DMD/Phobos is from git master and built with ENABLE_RELEASE=1. To me this seems surprising, especially considering that on Windows I used to get a significant speed increase when building DMD with MSVC instead of DMC. |
March 11, 2016 Re: dmd-built dmd is faster that ldc-built dmd or gdc-built dmd? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Vladimir Panteleev | On Friday, 11 March 2016 at 13:39:04 UTC, Vladimir Panteleev wrote: > Hi, > > In the process of setting up a new development environment, I noticed that DMD's codegen seems to outperform GDC's or LDC's when building DMD itself. > > I wrote a test script to measure the time it takes for DMD (built with different compilers) to build Phobos: > > http://dump.thecybershadow.net/9e42ff2858d1419cf41108cc50b0a83a/bench.sh > > My results are: > > dmd: 11.26 > ldc: 15.35 > gdc: 14.80 > https://github.com/D-Programming-Language/dmd/blob/master/src/root/rmem.d#L166-L193 How memory is allocated makes a huge difference. |
March 11, 2016 Re: dmd-built dmd is faster that ldc-built dmd or gdc-built dmd? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Iain Buclaw | On Friday, 11 March 2016 at 14:32:26 UTC, Iain Buclaw wrote:
> On Friday, 11 March 2016 at 13:39:04 UTC, Vladimir Panteleev wrote:
>> Hi,
>>
>> In the process of setting up a new development environment, I noticed that DMD's codegen seems to outperform GDC's or LDC's when building DMD itself.
>>
>> I wrote a test script to measure the time it takes for DMD (built with different compilers) to build Phobos:
>>
>> http://dump.thecybershadow.net/9e42ff2858d1419cf41108cc50b0a83a/bench.sh
>>
>> My results are:
>>
>> dmd: 11.26
>> ldc: 15.35
>> gdc: 14.80
>>
>
>
> https://github.com/D-Programming-Language/dmd/blob/master/src/root/rmem.d#L166-L193
>
> How memory is allocated makes a huge difference.
Thanks :) After changing that to version(all), LDC is faster now. Doesn't build with GDC though (multiple definitions)...
|
March 11, 2016 Re: dmd-built dmd is faster that ldc-built dmd or gdc-built dmd? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Vladimir Panteleev | On Friday, 11 March 2016 at 14:46:59 UTC, Vladimir Panteleev wrote:
> Thanks :) After changing that to version(all), LDC is faster now. Doesn't build with GDC though (multiple definitions)...
How much faster is LDC?
|
March 11, 2016 Re: dmd-built dmd is faster that ldc-built dmd or gdc-built dmd? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Edwin van Leeuwen | On Friday, 11 March 2016 at 15:04:44 UTC, Edwin van Leeuwen wrote:
> On Friday, 11 March 2016 at 14:46:59 UTC, Vladimir Panteleev wrote:
>> Thanks :) After changing that to version(all), LDC is faster now. Doesn't build with GDC though (multiple definitions)...
>
> How much faster is LDC?
About 10%, but I didn't measure rigorously.
|
March 11, 2016 Re: dmd-built dmd is faster that ldc-built dmd or gdc-built dmd? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Vladimir Panteleev | On Friday, 11 March 2016 at 14:46:59 UTC, Vladimir Panteleev wrote:
> On Friday, 11 March 2016 at 14:32:26 UTC, Iain Buclaw wrote:
>>
>> https://github.com/D-Programming-Language/dmd/blob/master/src/root/rmem.d#L166-L193
>>
>> How memory is allocated makes a huge difference.
>
> Thanks :) After changing that to version(all), LDC is faster now. Doesn't build with GDC though (multiple definitions)...
Yes, I know. And if I were to say which behaviour is desired. I'd say GDC is doing the right thing.
Marking all functions as 'weak' is a terrible idea on both DMD's and LDC's part.
|
March 11, 2016 Re: dmd-built dmd is faster that ldc-built dmd or gdc-built dmd? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Iain Buclaw | On Friday, 11 March 2016 at 15:09:26 UTC, Iain Buclaw wrote: > > Marking all functions as 'weak' is a terrible idea on both DMD's and LDC's part. I can't judge what is best here, but LDC does not always mark functions as weak. After the DDMD switch, we have multiple def. problems on Windows when bootstrapping using LDC 0.17: https://github.com/ldc-developers/ldc/issues/1310 |
March 11, 2016 Re: dmd-built dmd is faster that ldc-built dmd or gdc-built dmd? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Iain Buclaw | On Friday, 11 March 2016 at 15:09:26 UTC, Iain Buclaw wrote:
> Yes, I know. And if I were to say which behaviour is desired. I'd say GDC is doing the right thing.
>
> Marking all functions as 'weak' is a terrible idea on both DMD's and LDC's part.
I distinctly remember Daniel and me having to remove those functions from DDMD when we first got it to build with LDC during/after DConf 2015.
LDC definitely does not mark symbols as weak/comdat/etc. by default. However, the linker might not pull in an object file from a static library if the respective symbols have already been resolved using other files.
— David
|
Copyright © 1999-2021 by the D Language Foundation