Official compiler
David Nadlinger via Digitalmars-d
digitalmars-d at puremagic.com
Fri Feb 26 11:17:56 PST 2016
On Friday, 26 February 2016 at 18:53:21 UTC, Andrei Alexandrescu
wrote:
> My understanding is the main problem is the _same_ templates
> are repeatedly instantiated with the same exact parameters -
> the epitome of redundant work. -- Andrei
Within one compiler execution, there might be some optimization
potential in the way semantically equivalent template
instantiations are merged, yes – it's been a while since I have
looked at the related code (see e.g.
TemplateDeclaration.findExistingInstance).
Another area matching your description would be that of the same
template being instantiated from multiple compilation units,
where it can be omitted from some of the compilation units (i.e.
object files). Our current logic for that is broken anyway, see
e.g. https://issues.dlang.org/show_bug.cgi?id=15318.
I was referring to something different in my post, though, as the
question concerned "low-hanging fruit". The problem there is
really just that template names sometimes grow unreasonably long
pretty quickly. As an example, without wanting to divulge any
internals, some of the mangled symbols (!) in the Weka codebase
are several hundred kilobytes in size. core.demangle gives up on
them anyway, and they appear to be extremely repetitive. Note
that just like in Steven's post which I linked earlier, the code
in question does not involve any crazy recursive meta-templates,
but IIRC makes use of Voldemort types. Tracking down and fixing
this – one would almost be tempted to just use standard data
compression – would lead to a noticeable decrease in compile and
link times for affected code.
— David
More information about the Digitalmars-d
mailing list