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