Thread overview
x64 build time 3x slower?
Aug 07, 2017
Johnson Jones
Aug 07, 2017
Moritz Maxeiner
Aug 08, 2017
Johnson Jones
Aug 08, 2017
Johnson Jones
August 07, 2017
Why would that be. Program take about 4 seconds to compile and 12 for x64. There is fundamentally no difference between the two versions. I do link in gtk x86 and gtk x64 depending on version, and that's it as far as I can tell.

Debug
x86         4
x64         12
Release
x86         3
x64         5

The timings are pretty steady.






August 07, 2017
On Monday, 7 August 2017 at 22:19:57 UTC, Johnson Jones wrote:
> Why would that be. Program take about 4 seconds to compile and 12 for x64. There is fundamentally no difference between the two versions. I do link in gtk x86 and gtk x64 depending on version, and that's it as far as I can tell.
>
> Debug
> x86         4
> x64         12
> Release
> x86         3
> x64         5
>
> The timings are pretty steady.

Split up the build time in compile time and link time and see how the difference is distributed between the two.
If it's distributed overwhelmingly to the link time it could be that you're using Microsoft's linker for x64 and OPTLINK for x86?
August 08, 2017
On Monday, 7 August 2017 at 22:56:37 UTC, Moritz Maxeiner wrote:
> On Monday, 7 August 2017 at 22:19:57 UTC, Johnson Jones wrote:
>> Why would that be. Program take about 4 seconds to compile and 12 for x64. There is fundamentally no difference between the two versions. I do link in gtk x86 and gtk x64 depending on version, and that's it as far as I can tell.
>>
>> Debug
>> x86         4
>> x64         12
>> Release
>> x86         3
>> x64         5
>>
>> The timings are pretty steady.
>
> Split up the build time in compile time and link time and see how the difference is distributed between the two.
> If it's distributed overwhelmingly to the link time it could be that you're using Microsoft's linker for x64 and OPTLINK for x86?

Yeah, I guess that is probably it. Forgot that two different linkers were used... although, Not much is being linked. Visual D doesn't split up the two easily, I suppose I can't separate them. It should probably do individual profiling between the two.

Usually the build times are pretty close and I don't recall it being slow when I first started building, and my code hasn't changed much... But I did modify a few options such as debug diagnostics and such as those were causing visual studio to freeze.

I guess I could perfmon it to see what exactly it is doing.


August 08, 2017
On Tuesday, 8 August 2017 at 00:01:05 UTC, Johnson Jones wrote:
> On Monday, 7 August 2017 at 22:56:37 UTC, Moritz Maxeiner wrote:
>> On Monday, 7 August 2017 at 22:19:57 UTC, Johnson Jones wrote:
>>> Why would that be. Program take about 4 seconds to compile and 12 for x64. There is fundamentally no difference between the two versions. I do link in gtk x86 and gtk x64 depending on version, and that's it as far as I can tell.
>>>
>>> Debug
>>> x86         4
>>> x64         12
>>> Release
>>> x86         3
>>> x64         5
>>>
>>> The timings are pretty steady.
>>
>> Split up the build time in compile time and link time and see how the difference is distributed between the two.
>> If it's distributed overwhelmingly to the link time it could be that you're using Microsoft's linker for x64 and OPTLINK for x86?
>
> Yeah, I guess that is probably it. Forgot that two different linkers were used... although, Not much is being linked. Visual D doesn't split up the two easily, I suppose I can't separate them. It should probably do individual profiling between the two.
>
> Usually the build times are pretty close and I don't recall it being slow when I first started building, and my code hasn't changed much... But I did modify a few options such as debug diagnostics and such as those were causing visual studio to freeze.
>
> I guess I could perfmon it to see what exactly it is doing.

It takes about 3 seconds to write the map file(I have it generating cross references, not sure what it actually does but I thought it might help with debugging issues. I have it enabled for both x86 and x64. I thought I disabled
it with no differences, but maybe I missed it).

It takes another 4 seconds to create the pdb.

But it seems that about 6 seconds are done doing thing

7:13:14.7148555 PM	link.exe	9860	QueryStandardInformationFile	C:\D\Libraries\x64\gtkd.lib	SUCCESS	AllocationSize: 84,443,136, EndOfFile: 84,439,450, NumberOfLinks: 1, DeletePending: False, Directory: False
7:13:14.7148665 PM	link.exe	9860	CreateFileMapping	C:\D\Libraries\x64\gtkd.lib	SUCCESS	SyncType: SyncTypeOther
7:13:15.7801685 PM	ServiceHub.IdentityHost.exe	4952	Thread Exit		SUCCESS	Thread ID: 11224, User Time: 0.0000000, Kernel Time: 0.0000000
7:13:17.2481064 PM	ServiceHub.VSDetouredHost.exe	5004	Thread Create		SUCCESS	Thread ID: 10976
7:13:17.4141043 PM	devenv.exe	1040	Thread Create		SUCCESS	Thread ID: 11200
7:13:17.8990951 PM	DParserCOMServer.exe	4492	Thread Create		SUCCESS	Thread ID: 9176
7:13:18.7481654 PM	ServiceHub.VSDetouredHost.exe	5004	Thread Exit		SUCCESS	Thread ID: 10976, User Time: 0.0000000, Kernel Time: 0.0000000
7:13:18.9163321 PM	devenv.exe	1040	Thread Exit		SUCCESS	Thread ID: 11200, User Time: 0.0000000, Kernel Time: 0.0000000
7:13:19.4011479 PM	DParserCOMServer.exe	4492	Thread Exit		SUCCESS	Thread ID: 9176, User Time: 0.0000000, Kernel Time: 0.0000000
7:13:19.9681080 PM	ServiceHub.VSDetouredHost.exe	5004	Thread Create		SUCCESS	Thread ID: 10416


Not sure what is happening in there but it seems like Visual D or Visual Studio issue rather than dmd ;/


I'll look in to it some more to see what I can find.