CTFE slower than expected
Don Clugston
dac at nospam.com
Tue May 29 05:52:47 PDT 2012
On 29/05/12 12:25, Manu wrote:
> I've been trying to work out why my compile times have gone to hell
> recently.
>
> I have a lib, it takes 3.5 seconds to compile.
> I add one CTFE heavy module, it's not huge, certainly much smaller than
> the rest of the app, and it blows out to 18 seconds. I've done some
> experiments removing bits and pieces of code, I can isolate the bits
> that add seconds to the compile time, but the big offenders are one-line
> mixins which use CTFE fairly aggressively to generate the strings they
> mix in.
>
> Can anyone comment on CTFE as implemented? Why is it so slow?
You really don't want to know. What it's actually doing is horrific. Bug
6498.
The reason why it's still like that is that CTFE bugs have kept cropping
up (mostly related to pointers and especially AAs), which have prevented
me from doing anything on the performance issue.
> It's
> certainly not executing a lot of code. I can imagine executing the same
> routine in an interpreted language like lua would take milliseconds or
> less, not multiple seconds.
> What are the bottlenecks?
It's was originally based on the const-folding code used by the
optimizer. So most of the code was written with totally goals (that
didn't include performance).
> Is there any way to improve it?
Oh yeah. Orders of magnitude, easily. The slowness is not in any way
inherent to CTFE. The experience will be completely different, once I
have some time to work on it -- I know exactly how to do it.
More information about the Digitalmars-d
mailing list