On 8/16/22 4:25 AM, Diego wrote:
Hello everyone,

I'm a Java programmer at work but i'm learning D for pleasure. I'm reading _The D Programming Language by Ali Çehreli_.

I noticed that DMD creates very huge executable, for example an empty program:

```
empty.d:

void main() {

}
```

after a compilation with these flags `dmd -de -w empty.d` i have an executable of 869KiB
It seams huge in my opinion for an empty program

What are the best practices to reduce the size?

By default (but changing in some cases), D links the standard library in statically. This means that every D executable has a copy of the library (at least the used functions).

If you use C for a comparison, you have to include the C library size as well when comparing. On my system, libc is 2MB.

You can reduce size by using dynamic linking, but the drawback is that then you have to ensure the library exists on the target system in order to run.

If you are shipping a package with lots of D binaries it might make sense to do this, but for one-offs, probably not.

-Steve

Reply via email to