On Friday, 23 November 2018 at 08:57:57 UTC, Chris Katko wrote:
Any time I see people mention the benefits of D, I see "compile
times" "compile times" "compile times" over and over.
I'm using very modest amounts of templates, for a fairly small
sized program (very early work toward a game), and I'm hitting
~15 seconds compile time in LDC and ~7 seconds in DMD. And I'm
not even compiling with optimizations!
ldc2 -w -ofextra extra.d molto.d helper.d editor.d common.d
map.d object_t.d animation.d ini.d -L-L. $@ -gc -d-debug=3
-de -fdmd-trace-functions
dmd -w -ofextra extra.d molto.d helper.d editor.d common.d
map.d object_t.d animation.d ini.d -profile=gc -profile -g
-debug -color -L-L.
I keep putting stuff into new files, but it feels like it's
compiling everything from scratch / not getting faster the way
C++ does.
And I'm not even bringing up the 800MB of RAM required because
I dared to import std.regex. (On a laptop with 2 GB of RAM.
RIP. If I dare to have tabs open, the compile time goes into
the minutes thanks to swapping.)
I've profiled your example, unsurprisingly allmost all of the
compiletime is eaten by regex, which is executed at compile-time.
Most of the time there is actually taken by the
template-instantiation and the templates which are involved in
building the IR and such.
newCTFE helps out a little, but for this to be fast, std.regex
would have to be rewritten with CTFE in mind.
Maybe you can generate a finite automaton for your regex offline
using some other engine like which supports D or C.
That alone should cut a few seconds of your compile-times and
prevent out-of-memory errors,
I hope this helps.
Cheers,
Stefan