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?