Bug 83894 - [incr-comp] incremental: output weave times & files woven & heuristics
Summary: [incr-comp] incremental: output weave times & files woven & heuristics
Status: RESOLVED FIXED
Alias: None
Product: AspectJ
Classification: Tools
Component: Compiler (show other bugs)
Version: unspecified   Edit
Hardware: PC Windows XP
: P3 normal (vote)
Target Milestone: 1.6.1   Edit
Assignee: aspectj inbox CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2005-01-27 18:56 EST by Nicholas Lesiecki CLA
Modified: 2008-06-09 23:09 EDT (History)
2 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Nicholas Lesiecki CLA 2005-01-27 18:56:31 EST
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.
Comment 1 Matt Chapman CLA 2005-01-28 08:25:29 EST
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.
Comment 2 Adrian Colyer CLA 2005-03-23 09:27:19 EST
consider as part of incremental enhancements in aj5m4
Comment 3 Andrew Clement CLA 2005-09-28 09:37:14 EDT
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...
Comment 4 Adrian Colyer CLA 2005-10-28 07:57:55 EDT
remaining issues moved to 1.5.1
Comment 5 Andrew Clement CLA 2006-04-04 14:09:54 EDT
1.5.1 includes more info reported through the IStateListener interface to report decisions made during incremental compilation.  Could do even better.
Comment 6 Andrew Clement CLA 2007-10-23 06:31:42 EDT
review current output for 1.5.4 - is it sufficient?
Comment 7 Andrew Clement CLA 2008-06-09 23:09:10 EDT
we also now include diagnostics about what changes led to a particular file getting compiled.  I think this is sufficient for now.