On Mon, 5 Jan 2004 10:59:18 -0500, Dan Sugalski <[EMAIL PROTECTED]> wrote:

>I know IMCC's being redone, and we're nowhere near close to 
>optimized,
That was my guess
> but I think it'd be worth it to get a handle on what sorts 
>of things are likely to trigger off exponential time compiles when 
>fed to IMCC. I'm assuming that it's due to a combination of sub size 
>(about 61K of source in one sub) and locals needing coloring (132) 
>but it'd be nice to know for sure.
My experience was as follows (don't take these times too literally
since this is a very old, very slow box; the relative times are what
count). This was creating a single .sub:

compile source and write a 2,500 line imc file: 0.2 seconds
The first line of the imc file included a hand-crafted 1000 line file.
parrot -o t.pasm t.imc: 7 seconds
load the final pasm file (now 3,500 lines) and run it: 0.3 seconds

Editing the hand-crafted 1000-line include file to replace symbolic
registers (ie $I1 etc) with real registers (I1) cut imc time down to
3.5 seconds.
Changing the code emitter to re-use symbolic registers no longer in
use (ie not local variables, and not still on the parse stack) cut the
time down to 1.39 seconds.

Just letting you know what I found, I shall let you draw your own
conclusions.

Lastly, while I know that -O2 is not complete, I don't know by how
much it is incomplete. You may want to check the times on that too.

Regards,
Pete

Reply via email to