On Thursday, 17 September 2015 at 12:49:03 UTC, John Colvin wrote:
On Thursday, 17 September 2015 at 10:53:17 UTC, Chris wrote:
On Thursday, 17 September 2015 at 10:33:44 UTC, John Colvin
wrote:
Some initial bloat is expected, format is pretty big
(although twice as big is a lot, unless your original code
was quite small?).
It was in a test program. Only a few lines. But it would still
add a lot of bloat in a program that uses it in different
modules, wouldn't it?
The upfront cost is paid only once per unique template
arguments per binary. So no, it doesn't scale badly there.
Inlining, on the other hand, will - roughly speaking - increase
binary sizes linearly with the number of calls. That's the cost
you pay for (hopefully) better performance.
The extra bloat per call is likely due to inlining. I would
hope that dmd would spot consecutive inlining of the same
function and merge them, but perhaps it doesn't.
You could certainly make a less feature complete
implementation of format that is smaller.
Don't know if it's worth the trouble.
I would say not worth it, unless you have a real problem with
binary sizes for an actual finished product. Even then, I'd say
you could get bigger, easier gains by messing around with
-fvisibility settings, --gc-sections, strip etc. on GDC and LDC
Have you tried with ldc or gdc. In particular, have you tried
using ldc with --gc-sections on linux?
Not yet. GDC and LDC always lag behind (this time
considerably), so I'm usually stuck with DMD for development.
That's a shame.
https://github.com/ldc-developers/ldc/releases/tag/v0.16.0-alpha3 is at 2.067.1, is that not up-to-date enough?
Thanks.
That's up to date enough now. Is it stable, though? For version
2.067.1 it took a long time this time. Maybe we should focus some
of our efforts on LDC and GCD being up to date faster.