For the revision of the CC paper, I've been taking some measurements for
compile times. On the benches, it looks not too bad:
1.1-4.4 times slower than ajc when using abc -O0
1.4-6.5 times slower than ajc when using abc
The 6.5 is in fact for LoD, which appears acceptable if you see the
speedup in the generated code.
However, I also tried compiling abc itself:
javac 5.0secs
ajc 5.4secs
abc 374.9secs
abc -O0 312.3secs
Note that this is pure Java - no aspects in sight. A breakdown reveals
there is no obvious single culptrit:
[ 00.249% ] Init. of Soot: 862
[ 00.009% ] Loading Jars: 32
[ 00.074% ] Create polyglot compiler: 258
[ 22.201% ] Polyglot phases: 76964
[ 01.351% ] Initial Soot resolving: 4682
[ 00.000% ] Soot resolving: 0
[ 00.000% ] Aspect inheritance: 0
[ 00.000% ] Declare Parents: 1
[ 00.006% ] Intertype Adjuster: 21
[ 26.565% ] Jimplification: 92092
[ 00.000% ] Fix up constructor calls: 1
[ 00.142% ] Update pattern matcher: 493
[ 00.078% ] Weave Initializers: 271
[ 00.000% ] Load shadow types: 0
[ 03.974% ] Compute advice lists: 13775
[ 00.003% ] Add aspect code: 11
[ 09.000% ] Weaving advice: 31199
[ 00.081% ] Exceptions check: 281
[ 27.753% ] Soot Packs: 96208
[ 08.513% ] Soot Writing Output: 29512
It does appear somewhat strange that advice weaving is a significant
factor when there are no aspects, but that's definitely not the
main cause.
Does someone else have time to look into this? The obvious suspect
is the generated lexer/parser code, which may reveal non-linear
algorithms in polyglot, the jimplifier and soot packs alike...
We cannot submit a paper with such results to ECOOP...
-Oege
Received on Mon Dec 13 22:12:30 2004
This archive was generated by hypermail 2.1.8 : Wed Dec 15 2004 - 02:10:04 GMT