compiled code file size
Dicebot
public at dicebot.lv
Sat Sep 21 03:29:33 PDT 2013
On Friday, 20 September 2013 at 23:03:48 UTC, H. S. Teoh wrote:
> I'll continue refining the analysis while Walter works on more
> lazy
> instantiations for imports. I'm expecting to see a lot of
> improvements
> in this area. :)
I have been doing similar analysis for some time too, only mostly
manually (was curious what symbols actually get included for
trivial programs), with pretty much the same conclusion.
Right now I am pretty much convinced that we need some sort of
whole program optimization and tweak language spec to allow it
safely (i.e. force dynamically loaded symbols to be marked with
export).
Lot of code bloat comes from stuff which is unnecessary in the
big picture but compiler has to means to decide it during
compilation. There is no real reason why
`[1, 2, 3].map!(a => a*2)().reduce!((a, b) => a + b)(0)`
can't be reduce to single loop and inlined, leaving no traces of
actual std.algorithm usage.
Other than compiler can't possibly be sure that you won't try to
link to those generate instances somewhere (or pass it to shared
library). That feels like a language design issue to address.
More information about the Digitalmars-d
mailing list