AST files instead of DI interface files for faster compilation and easier distribution

Iain Buclaw ibuclaw at ubuntu.com
Sat Jun 16 02:18:07 PDT 2012


On 13 June 2012 12:47, Iain Buclaw <ibuclaw at ubuntu.com> wrote:
> On 13 June 2012 12:33, Kagamin <spam at here.lot> wrote:
>> On Wednesday, 13 June 2012 at 11:29:45 UTC, Kagamin wrote:
>>>
>>> The measurements should be done for modules being imported, not the module
>>> being compiled.
>>> Something like this.
>>> ---
>>> import std.algorithm;
>>> import std.stdio;
>>> import std.typecons;
>>> import std.datetime;
>>>
>>> int ok;
>>> ---
>>
>>
>> Oh and let it import .d files, not .di
>
> std.datetime is one reason for me to run it again. I can imagine that
> *that* module will have an impact on parse times.  But I'm still
> persistent that the majority of the compile time in the frontend is
> done in the first semantic pass, and not the read/parser stage. :~)
>
>

Rebuilt a compile log with latest gdc as of writing on the 2.059
frontend / library.

http://iainbuclaw.files.wordpress.com/2012/06/d2time_report32_2059.pdf
http://iainbuclaw.files.wordpress.com/2012/06/d2time_report64_2059.pdf


Notes about it:
- GCC has 4 new time counters
  -  phase setup  (time spent loading the compile time environment)
  -  phase parsing  (time spent in the frontend)
  -  phase generate (time spent in the backend)
  -  phase finalize  (time spent cleaning up and exiting)

- Of the phase parsing stage, it is broken down into 5 components
  -  Module::parse
  -  Module::semantic
  -  Module::semantic2
  -  Module::semantic3
  -  Module::genobjfile

- Module::read, Module::parse and Module::importAll in the one I did 2
years ago are now counted as part of just the one parsing stage,
rather than separate just to make it a little bit more balanced. :-)


I'll post a tl;dr later on it.

-- 
Iain Buclaw

*(p < e ? p++ : p) = (c & 0x0f) + '0';


More information about the Digitalmars-d mailing list