On Wednesday, 8 January 2020 at 06:51:57 UTC, H. S. Teoh wrote:
On Wed, Jan 08, 2020 at 04:40:02AM +0000, Guillaume Lathoud via Digitalmars-d-learn wrote:
[...]
[...]

Generally, the recommendation is to separately compile each package. E.g., if you have a source tree of the form:

        src/
        src/main.d
        src/pkg1/mod1.d
        src/pkg1/mod2.d
        src/pkg2/mod3.d
        src/pkg2/mod4.d

then you'd have 3 separate compilations:

        dmd -ofpkg1.o src/pkg1/mod1.d src/pkg1/mod2.d
        dmd -ofpkg2.o src/pkg2/mod3.d src/pkg2/mod4.d
        dmd -ofmyprogram src/main.d pkg1.o pkg2.o

The first two can be done in parallel, since they are independent of each other.

The reason per-package granularity is suggested is because the accumulated overhead of separately compiling every file makes it generally not worth the effort. D compiles fast enough that per-package compilation is still reasonably fast, but you no longer incur as much overhead from separately compiling every file, yet you still retain the advantage of not recompiling the entire program after every change.

(Of course, the above example is greatly simplified; generally you'd have about 10 or more files per package, and many more packages, so the savings can be quite significant.)


T

What's the downsides / difficulties / "hoops to jump through" penalty for putting code into modules instead of one massive project? Is it just a little extra handwriting/boilerplate, or is there a performance impact talking to other modules vs keeping it all in one?

Reply via email to