On Tuesday, 31 July 2018 at 15:19:19 UTC, Dan Barbarito wrote:
Hi all,
I am starting to write a command line tool. So far it is a
small (feature-wise) program but the file size is scaring me.
It's already 13 megabytes, but I would expect it to be much
smaller. Is it because I'm using 3 libraries so far? The
libraries are: mir, vibe.d, and d2sqlite3. Would using these
libraries be causing this file size?
The code can be found here
(http://fossil.barbarito.me/finbot/zip/finbot.zip), if anyone
wants to take a look. I am simply running "dub build" to build
the binary. I tried running "dub build --build=release" but
that didn't effect the file size too much.
Thanks!
If you use LDC, release build and their full LTO (-flto=full),
the resulting binary should get smaller.
DFLAGS="-flto=full" dub build --compiler=ldc -b release
As an example, dlang-tour is 53M in debug build with DMD, but
with LTO + release + ldc it gets down to 6.2M.
You also get a smaller build, if instead of using all of Vibe.d,
you only use the subset of components you actually use, e.g.
dependency "vibe-d:web" version="~>0.8"