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

Reply via email to