On 8/19/2010 11:13 AM, Leandro Lucarella wrote:
Andrei Alexandrescu, el 19 de agosto a las 08:50 me escribiste:
On 08/19/2010 07:48 AM, Eldar Insafutdinov wrote:
I'll be doing a followup on why D compiles fast.

I will say the contrary. Compiling medium size projects doesn't matter in either
language. But when the size of your project starts getting very big you will 
have
troubles in D because there is no incremental compilation.

I'm a bit confused - how do you define incremental compilation? The
build system can be easily set up to compile individual D files to
object files, and the use the linker in a traditional manner.

I think in D you can do the same level of incremental compilation as in
C/C++ but is not as natural. For one, in D is not natural to separate
declarations from definitions, so a file in D tends to be dependent in
*many* *many* other files because of excessive imports, so even when you
can do separate compilation, unless you are *extremely* careful (much
more than in C/C++ I think) you'll end up having to recompile the whole
project even you change just one file because of the dependency madness.

I know you can do separate compilation as in C/C++ writing the
declarations in a different file, or generating/using .di files, but
also you'll probably end up using libraries that don't do that (as
somebody mentioned for C++ + STL) and end up in a dependency madness
anyway. It's just not natural to do so in D, it even encourages not
doing it as one of the main advertised features is you don't have to
separate declarations from definitions.

And I'm not saying that is an easy to solve problem, I'm just saying
that I agree D doesn't scale well in terms of incremental compilations
for big projects, unless you go against D natural way on doing things.



I link my game engine (20kloc) with derelict, which is much larger. On my 5 year old laptop, it takes about 3-4 seconds to compile the engine, importing the non di'd derelict headers, and linking with the derelict lib. If I compile the whole lot, it takes about 30 seconds.

Just wanted to share some real-world stats.

Reply via email to