On 10 June 2013 02:28, Walter Bright <walter@digitalmars.com> wrote:
Wow! (How many of those are unique, rather than reusing an existing instantiation?)
On 6/9/2013 1:32 PM, Don Clugston wrote:
Yeah. 4 orders of magnitude. Our codebase at sociomantic is a bit larger than Phobos + druntime, but it compiles in just a few seconds.
The problem is, that because of templates, the memory consumption isn't linear with source size.
dmd -unittest -o- std/algorithm
instantiates 344150 templates. Yes 344K. More than a third of a million.
I'm not sure. That's the number of calls to the constructor of TemplateInstance. I don't understand the code well enough to know
if it can eventually gets merged with an existing TemplateInstance.If so, then perhaps there's something we could do to prevent them from getting created in the first place if they are duplicates.
Certainly there are a huge number of instantiations of things like:hasLength, isNarrowString, isForwardRangeIt seems hard to believe there would be enough types to instantiate isNarrowString thousands of different times.
More than the number of lines of source in the module.
And yet there are only 1305 asserts in that module -- the tests are not particularly comprehensive.
-cov shows 96% coverage for std.algorithmYeah, my point was that for N tests, we get O(N^^2) templates instantiated.
_______________________________________________
dmd-internals mailing list
dmd-internals@puremagic.com
http://lists.puremagic.com/mailman/listinfo/dmd-internals