whatever I do, things get slower and bigger
Bill Baxter
dnewsgroup at billbaxter.com
Thu Mar 13 16:42:27 PDT 2008
BCS wrote:
> I'm working on my parser generator and trying to shoe horn it into a
> smaller memory foot print. One approach I'm trying, is to replace
> recursive templates with CTFE function and string mixins. This is in an
> effort to reduce the number of types that get declared (mostly I'm using
> struct templates). The problem is that the CTFE functions seem to
> actually use MORE ram than the templates do. I've tried a number of
> things like converting to an O(n log n) concatenation system rather than
> a O(n^2) and other such tricks but everything seems to be going
> backwards. Any advice? (D v1 BTW) I can post code if anyone cares (it's
> kind of large: 1.2KLOC, takes a while to compile: ~6min, and use a lot
> of RAM: ~2GB).
>
> (after a bit more fiddling)
>
> I've got it down to 1GB of ram (Yeah!). My conclusions: don't build
> strings with CTFE unless it's a lot harder to do it with templates. It
> seems that CTFE is a bigger memory hog than templates even with temples
> memoizing everything into the symbol tables.
>
>
Yes I believe Don has previously reported that CTFE manipulations on
strings basically *never* free the intermediate strings. Basically the
CTFE engine needs a garbage collector (or equiv).
--bb
More information about the Digitalmars-d-learn
mailing list