Community
Participate
Working Groups
Per Andy Clement on aspectj-users on Jan 27, 2005: " Incremental is going to be the default mode in AJDT shortly and anything 'unusual' (excessively slow build times...) should be considered a bug that we have to fix. " I've raised this bug because it is difficult to report bugs for "unusually slow" build times. What I think we need is some optional output that says something like: > Performing a full reweave because aspect MyTracingAspect pointcut has changed. > Weave took 50.906 seconds. or > Performing an incremental weave because class MyClient has changed. > rewove : MyClient > (??? Does more than one file ever get affected by an incremental weave? If so, this should be output here) > Weave took 1.070 seconds. This information should help interested users understand why some compilations take so long (e.g. a full reweave triggered by a change to an aspect) and should help us submit real bugs when an incremental weave takes more than we think it should. (This information should probably be available in the problems view in AJDT as weave messages are now.) I'm going to enter a related bug for outputting the total time contributed by any aspect to the weave.
The "AJDT Event Trace" view is probably the best place for this (available under Show view > Other > AspectJ). It already shows various messages from the compiler, such as the type of build (full or incremental) and the total time taken.
consider as part of incremental enhancements in aj5m4
We have improved the info that comes out, a typical report in the AJDT event trace now shows: 14:29:36 Build kind = FULLBUILD 14:29:36 Project=org.aspectj.lib kind of build requested =Full AspectJ compilation 14:29:36 Builder: Tidied output folder, deleted 11 .class files from K:\ws\aspectj_ws3\org.aspectj.lib\bin 14:29:41 Timer event: 5187ms: Time to first compiled message 14:29:41 Timer event: 5437ms: Time to first woven message 14:29:42 AspectJ reports build successful, build was: FULL 14:29:42 Timer event: 5828ms: Total time spent in AJDE 14:29:42 Timer event: 30ms: Create element map (4 rels in project: org.aspectj.lib) 14:29:42 Types affected during build = 8 14:29:42 Timer event: 0ms: Add markers (4 markers) 14:29:42 Timer event: 6229ms: Total time spent in AJBuilder.build() 14:30:08 AJDTContentProvider.selectionChanged(): Marking visualiser content as out of date Important information it tells you is: - The kind of build AJDT requested and the kind of build actually performed (the compiler works out whether an incremental compilation is actually possible, regardless of what AJDT asks for) - The time spent in AJDE (i.e time spent compiling and weaving) - The number of types 'affected' during the compile, for perfect incremental compilation (you change one class and save it) this should be 1 - Time spent in AJDT build method, the majority of this time should be in AJDE - if thats not the case its a clue to look for an AJDT bug. The remaining useful info could be about the reasons why compilation of certain files has occurred - I will think about that whilst looking at the other incremental bugs...
remaining issues moved to 1.5.1
1.5.1 includes more info reported through the IStateListener interface to report decisions made during incremental compilation. Could do even better.
review current output for 1.5.4 - is it sufficient?
we also now include diagnostics about what changes led to a particular file getting compiled. I think this is sufficient for now.