Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
RE: [ajdt-dev] AJDT speed with multiple projects

Andy,

>I was thinking I would do a 1.4 update just for you but I can't because
Eclipse 3.2 won't seem to run on my Mac.

Thanks to have tried.

> However, you may be able to just drop in the 1.5.4 final components
into AJDT1.4.2.  

We have tried the 1.5.4 final components but that didn't work. After
reviewing the patch from
https://bugs.eclipse.org/bugs/show_bug.cgi?id=166580 it seems that we
also need a small adaptation to AJDE, to plug
src/org/aspectj/ajde/internal/OutputLocationAdapter.java. The bug said
that this have been done under AJDT 1.5.0.200701100718 for Eclipse
3.3M4.

We are currently trying to make the change to AJDE for Eclipse 3.2.

>However, if you have mixed projects (some java, some Aj) I don't think
this will address your problems...

We have tried will all projects converted to AJ for the project we can
convert. However, we are not allowed to convert EAR projects. Hopefully,
EAR projects are not required, after all they don't compile Java code.
That didn't solve our issue.

I let you know the result of our custom AJDE for Eclipse 3.2.

-----Original Message-----
From: ajdt-dev-bounces@xxxxxxxxxxx [mailto:ajdt-dev-bounces@xxxxxxxxxxx]
On Behalf Of Andy Clement
Sent: Tuesday, March 04, 2008 1:16 PM
To: ajdt-dev@xxxxxxxxxxx
Subject: Re: [ajdt-dev] AJDT speed with multiple projects

Hello Sebastien,

On 03/03/2008, Sebastien Tardif <stardif@xxxxxxxxxxxx> wrote:
> Thanks for your prompt response.
>
>  In the log we have provided, we added only a space so all the
dependent
>  did incremental build, but when we add or remove a constant the
>  dependent do full build. We only use one output location for each
>  project but they have different names and we use special project type
>  Web, EAR, EJB module so they may add implicit output location or
mix-up
>  the logic.
>
>  Like you said, we are probably impacted by
>
> https://bugs.eclipse.org/bugs/show_bug.cgi?id=166580

I was thinking I would do a 1.4 update just for you but I can't
because Eclipse 3.2 won't seem to run on my Mac.  However, you may be
able to just drop in the 1.5.4 final components into AJDT1.4.2.  If
you are interested in trying this, you need to update 3 plugins in
your eclipse/plugins folder with new versions from CVS. (Backup what
you are replacing first...)

org.aspectj.ajde_<whatever is the latest version>
In this plugin you need to update ajde.jar - the 1.5.4 version is here:
http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.ajdt/AJDT_src/org.a
spectj.ajde/ajde.jar?revision=1.79&root=Tools_Project&pathrev=AJDT151

org.aspectj.runtime
In this plugin you need to update aspectjrt.jar - the 1.5.4 version is
here:
http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.ajdt/AJDT_src/org.a
spectj.runtime/aspectjrt.jar?root=Tools_Project&view=co&pathrev=AJDT151

org.aspectj.weaver
In this plugin you need to update aspectjweaver.jar - the 1.5.4 version
is here:
http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.ajdt/AJDT_src/org.a
spectj.weaver/aspectjweaver.jar?root=Tools_Project&view=co&pathrev=AJDT1
51

However, if you have mixed projects (some java, some Aj) I don't think
this will address your problems...

>  We actually have a mix, because we wanted to minimize the overhead of
>  AJDT so we have excluded the projects we think are unlikely to need
to
>  be woven.

Perfectly understandable, I know this is a common case.

>  Is it always a problem to mix the project types? Do we have a precise
>  description somewhere of the combination having or not the problem?

Anytime you have a dependency between the two, you get this problem.
Whether it is the Java project or the Aj project that is being built,
they won't understand what happened in the project they depend on
because of the incompatible incremental state objects.  I know it
seems obvious that the class file is the same as before, but the state
of what happened during a compilation is wrapped up inside a state
object.

The more straightforward case we can fix is where an AspectJ project
depends on a Java project - because we can reflect on the JDT state
object and enable the AspectJ project to query what changed - ie. was
it a structural change, does this AspectJ project need to rebuild?
The hard case to fix is where a JDT project depends on an AspectJ
project, we cannot modify JDT so the best we can do is create some JDT
representation of the AspectJ projects status and hope we can convince
JDT to treat it as if it came from the JDT compiler.

I know you mentioned concerns over memory - but can you try converting
them all to AspectJ just to see if that improves what happens for a
simple whitespace change?  It should, otherwise we have a bug.

Other approaches would be to shuffle dependencies so that you don't
have a switch to the alternative project type half way down your chain
of dependencies.  If your aspectj projects are all at the top,
followed by all the Java projects, then you should find working in the
Java stuff will not cause a problem.  It is only when we cross between
project types down a dependency chain that you will see issues.

Andy.

>  -----Original Message-----
>  From: ajdt-dev-bounces@xxxxxxxxxxx
[mailto:ajdt-dev-bounces@xxxxxxxxxxx]
>  On Behalf Of Andy Clement
>
> Sent: Monday, March 03, 2008 11:59 PM
>  To: ajdt-dev@xxxxxxxxxxx
>  Subject: Re: [ajdt-dev] AJDT speed with multiple projects
>
>
> On 03/03/2008, Sebastien Tardif <stardif@xxxxxxxxxxxx> wrote:
>  > It seems that AJDT 1.4.2.200705221209 was released before AspectJ
>  1.5.4
>  >  is released so that what is known to be fixed in AspectJ 1.5.4 may
>  not
>  >  be included in 1.5.4.200705211336.
>
>  Indeed - but I didn't think anything had gone in that would affect
you
>  during that time.  And from the query I just ran to see what was
fixed
>  in that time:
>
https://bugs.eclipse.org/bugs/buglist.cgi?query_format=advanced&short_de
>
sc_type=allwordssubstr&short_desc=&product=AspectJ&target_milestone=1.5.
>
4&long_desc_type=allwordssubstr&long_desc=&bug_file_loc_type=allwordssub
>
str&bug_file_loc=&status_whiteboard_type=allwordssubstr&status_whiteboar
>
d=&keywords_type=allwords&keywords=&emailtype1=substring&email1=&emailty
>
pe2=substring&email2=&bugidtype=include&bug_id=&votes=&chfieldfrom=2007-
>
05-21&chfieldto=Now&chfieldvalue=&cmdtype=doit&order=Reuse+same+sort+as+
>  last+time&field0-0-0=noop&type0-0-0=noop&value0-0-0=
>
>  only one thing struck me as a possible fix you didn't have:
>  https://bugs.eclipse.org/bugs/show_bug.cgi?id=166580
>
>  which is to do with incremental builds always being full builds when
>  using multiple output locations.  But as your information said every
>  build that did occur was incremental, I don't think this is affecting
>  you.
>
>  >  We have 22 projects in our workspace. The projects are dependents
>  like a
>  >  tree, so some depend of x projects and those x projects may depend
of
>  >  others. We have no circular references.
>
>  Do you have any java projects or are they all AspectJ projects? If
you
>  have a mixture, you might well be hitting what I recently described
in
>  another thread last week.
>
>  >  In the trace below, only a Java file was modified by adding a
space
>  so
>  >  the resulting *.class should be the same then there is no point to
>  >  involve the dependents. Do you agree?
>
>  Of course.
>
>  > Do we already have a bug logged or it's already fixed?
>
>  I had a quick look over the AJDT bugs and I can't see one.
>
>  >  We also notice that full build is often done when we expect
>  incremental
>  >  build.
>
>  This can be the case if Java/AJ projects are mixed.  If it isn't that
>  then it sounds like a bug.
>
>  >  We also see that AspectJ compiler is keeping a big chunk of
>  >  WeakReference that take around 800 megs in our RAD. One our
developer
>  >  said that if we call org.aspectj.weaver.Dump.reset() the leak will
>  go.
>  >  800 megs just for the AspectJ compiler is close to the limit a JVM
>  can
>  >  have on Windows so we cannot extend our JVM memory allocation.
>
>  I do believe I have a bug open for that somewhere - and am looking at
>  memory usage when I get a chance.
>
>  >  My team is complaining to me after I introduced AJDT in our big
>  >  government project.
>  >
>  >  Anyone is using AJDT on big software with multiple projects in the
>  same
>  >  workspace?
>  >
>  >  What's the best practice to use AspectJ with Eclipse/RAD without
>  AJDT?
>  >
>  >
>  >  -----Original Message-----
>  >  From: ajdt-dev-bounces@xxxxxxxxxxx
>  [mailto:ajdt-dev-bounces@xxxxxxxxxxx]
>  >  On Behalf Of Andy Clement
>  >  Sent: Monday, March 03, 2008 1:48 PM
>  >  To: ajdt-dev@xxxxxxxxxxx
>  >  Subject: Re: [ajdt-dev] AJDT speed with multiple projects
>  >
>  >  I'm not planning on upgrading the Eclipse 3.2 version of AJDT any
>  time
>  >  soon - but as far as I am aware it includes all the optimizations
>  that
>  >  are in the later versions, so it wouldn't change your situation.
>  >
>  >  How are your projects dependent?  Just a big stack of AJ projects
>  that
>  >  depend on each other?
>  >
>  >  Andy.
>  >
>  >  On 28/02/2008, Sebastien Tardif <stardif@xxxxxxxxxxxx> wrote:
>  >  >
>  >  >
>  >  >
>  >  >
>  >  > Hi,
>  >  >
>  >  >
>  >  >
>  >  > I put a space in a file and saved. I got the log below. Could I
>  >  optimize
>  >  > something? By the way, I'm stock to use Eclipse 3.2 because I
use
>  IBM
>  >  RAD.
>  >  > Is a possibility that a more recent AJDT supporting Eclipse 3.2
>  will
>  >  be
>  >  > built?
>  >  >
>  >  >
>  >  >
>  >  > 5:46:38 PM Startup information:
>  >  >
>  >  >    AJDT version: 1.4.2.200705221209 for Eclipse 3.2
>  >  >
>  >  >    AspectJ Compiler version: DEVELOPMENT
>  >  >
>  >  >    usingVisualiser=true
>  >  >
>  >  >    usingXref=true
>  >  >
>  >  >    usingCUprovider=false
>  >  >
>  >  >    doneAutoOpenXRefViewC:/cc_views_dr_5_1_0_0/workspace =
>  >  > true
>  >  >
>  >  >    org.aspectj.ajdt.core.compiler.weaver.XNoInline = true
>  >  >
>  >  >    ajde.version.at.previous.startup = @AJDEVERSION@
>  >  >
>  >  >    org.aspectj.ajdt.core.compiler.weaver.XNotReweavable =
>  >  > true
>  >  >
>  >  > 5:46:49 PM
>  >  >
>  >
>
========================================================================
>  >  ===================
>  >  >
>  >  > 5:46:49 PM Build kind = AUTOBUILD
>  >  >
>  >  > 5:46:49 PM Project=svcapp, kind of build requested=Incremental
>  AspectJ
>  >  > compilation
>  >  >
>  >  > 5:46:49 PM build: Examined delta - source file changes in
required
>  >  project
>  >  > svcapp
>  >  >
>  >  > 5:46:50 PM Preparing for build: planning to be an incremental
build
>  >  >
>  >  > 5:46:50 PM Starting incremental compilation loop 1 of possibly 5
>  >  >
>  >  > 5:46:51 PM Timer event: 1687ms: Time to first compiled message
>  >  >
>  >  > 5:46:51 PM Timer event: 1718ms: Time to first woven message
>  >  >
>  >  > 5:46:51 PM AspectJ reports build successful, build was:
INCREMENTAL
>  >  >
>  >  > 5:46:51 PM AJDE Callback: finish. Was full build: false
>  >  >
>  >  > 5:46:51 PM Timer event: 1890ms: Total time spent in AJDE
>  >  >
>  >  > 5:46:52 PM Timer event: 390ms: Create element map (1 rels in
>  project:
>  >  > svcapp)
>  >  >
>  >  > 5:46:52 PM Types affected during build = 1
>  >  >
>  >  > 5:46:52 PM Timer event: 0ms: Add markers (2 markers)
>  >  >
>  >  > 5:46:52 PM Timer event: 2765ms: Total time spent in
>  AJBuilder.build()
>  >  >
>  >  > 5:46:52 PM
>  >  >
>  >
>
========================================================================
>  >  ===================
>  >  >
>  >  > 5:46:52 PM Build kind = AUTOBUILD
>  >  >
>  >  > 5:46:52 PM Project=svcCommon, kind of build
requested=Incremental
>  >  AspectJ
>  >  > compilation
>  >  >
>  >  > 5:46:52 PM Preparing for build: planning to be an incremental
build
>  >  >
>  >  > 5:46:52 PM AspectJ reports build successful, build was:
INCREMENTAL
>  >  >
>  >  > 5:46:52 PM AJDE Callback: finish. Was full build: false
>  >  >
>  >  > 5:46:52 PM Timer event: 437ms: Total time spent in AJDE
>  >  >
>  >  > 5:46:53 PM Timer event: 63ms: Create element map (0 rels in
>  project:
>  >  > svcCommon)
>  >  >
>  >  > 5:46:53 PM Timer event: 0ms: Add markers (0 markers)
>  >  >
>  >  > 5:46:53 PM Timer event: 625ms: Total time spent in
>  AJBuilder.build()
>  >  >
>  >  > 5:46:53 PM
>  >  >
>  >
>
========================================================================
>  >  ===================
>  >  >
>  >  > 5:46:53 PM Build kind = AUTOBUILD
>  >  >
>  >  > 5:46:53 PM Project=imProvisioningHub, kind of build
>  >  requested=Incremental
>  >  > AspectJ compilation
>  >  >
>  >  > 5:46:53 PM Preparing for build: planning to be an incremental
build
>  >  >
>  >  > 5:46:53 PM AspectJ reports build successful, build was:
INCREMENTAL
>  >  >
>  >  > 5:46:53 PM AJDE Callback: finish. Was full build: false
>  >  >
>  >  > 5:46:53 PM Timer event: 375ms: Total time spent in AJDE
>  >  >
>  >  > 5:46:53 PM Timer event: 0ms: Create element map (0 rels in
project:
>  >  > imProvisioningHub)
>  >  >
>  >  > 5:46:53 PM Timer event: 0ms: Add markers (0 markers)
>  >  >
>  >  > 5:46:53 PM Timer event: 421ms: Total time spent in
>  AJBuilder.build()
>  >  >
>  >  > 5:46:53 PM
>  >  >
>  >
>
========================================================================
>  >  ===================
>  >  >
>  >  > 5:46:53 PM Build kind = AUTOBUILD
>  >  >
>  >  > 5:46:53 PM Project=ctIvrWeb, kind of build requested=Incremental
>  >  AspectJ
>  >  > compilation
>  >  >
>  >  > 5:46:53 PM Preparing for build: planning to be an incremental
build
>  >  >
>  >  > 5:46:53 PM AspectJ reports build successful, build was:
INCREMENTAL
>  >  >
>  >  > 5:46:53 PM AJDE Callback: finish. Was full build: false
>  >  >
>  >  > 5:46:53 PM Timer event: 344ms: Total time spent in AJDE
>  >  >
>  >  > 5:46:53 PM Timer event: 0ms: Create element map (0 rels in
project:
>  >  > ctIvrWeb)
>  >  >
>  >  > 5:46:53 PM Timer event: 0ms: Add markers (0 markers)
>  >  >
>  >  > 5:46:53 PM Timer event: 375ms: Total time spent in
>  AJBuilder.build()
>  >  >
>  >  > 5:46:53 PM
>  >  >
>  >
>
========================================================================
>  >  ===================
>  >  >
>  >  > 5:46:53 PM Build kind = AUTOBUILD
>  >  >
>  >  > 5:46:53 PM Project=connectors, kind of build
requested=Incremental
>  >  AspectJ
>  >  > compilation
>  >  >
>  >  > 5:46:54 PM Preparing for build: planning to be an incremental
build
>  >  >
>  >  > 5:46:54 PM AspectJ reports build successful, build was:
INCREMENTAL
>  >  >
>  >  > 5:46:55 PM AJDE Callback: finish. Was full build: false
>  >  >
>  >  > 5:46:55 PM Timer event: 1062ms: Total time spent in AJDE
>  >  >
>  >  > 5:46:56 PM Timer event: 781ms: Create element map (0 rels in
>  project:
>  >  > connectors)
>  >  >
>  >  > 5:46:56 PM Timer event: 0ms: Add markers (0 markers)
>  >  >
>  >  > 5:46:56 PM Timer event: 2359ms: Total time spent in
>  AJBuilder.build()
>  >  >
>  >  > 5:46:56 PM
>  >  >
>  >
>
========================================================================
>  >  ===================
>  >  >
>  >  > 5:46:56 PM Build kind = AUTOBUILD
>  >  >
>  >  > 5:46:56 PM Project=ejbapp, kind of build requested=Incremental
>  AspectJ
>  >  > compilation
>  >  >
>  >  > 5:46:56 PM Preparing for build: planning to be an incremental
build
>  >  >
>  >  > 5:46:57 PM AspectJ reports build successful, build was:
INCREMENTAL
>  >  >
>  >  > 5:46:57 PM AJDE Callback: finish. Was full build: false
>  >  >
>  >  > 5:46:57 PM Timer event: 702ms: Total time spent in AJDE
>  >  >
>  >  > 5:46:57 PM Timer event: 141ms: Create element map (0 rels in
>  project:
>  >  > ejbapp)
>  >  >
>  >  > 5:46:57 PM Timer event: 0ms: Add markers (0 markers)
>  >  >
>  >  > 5:46:57 PM Timer event: 1000ms: Total time spent in
>  AJBuilder.build()
>  >  >
>  >  > 5:46:57 PM
>  >  >
>  >
>
========================================================================
>  >  ===================
>  >  >
>  >  > 5:46:57 PM Build kind = AUTOBUILD
>  >  >
>  >  > 5:46:57 PM Project=ctWebClient, kind of build
requested=Incremental
>  >  AspectJ
>  >  > compilation
>  >  >
>  >  > 5:46:58 PM Preparing for build: planning to be an incremental
build
>  >  >
>  >  > 5:46:58 PM AspectJ reports build successful, build was:
INCREMENTAL
>  >  >
>  >  > 5:46:58 PM AJDE Callback: finish. Was full build: false
>  >  >
>  >  > 5:46:58 PM Timer event: 906ms: Total time spent in AJDE
>  >  >
>  >  > 5:46:58 PM Timer event: 218ms: Create element map (1 rels in
>  project:
>  >  > ctWebClient)
>  >  >
>  >  > 5:46:58 PM Timer event: 0ms: Add markers (0 markers)
>  >  >
>  >  > 5:46:58 PM Timer event: 1437ms: Total time spent in
>  AJBuilder.build()
>  >  >
>  >  > 5:46:58 PM
>  >  >
>  >
>
========================================================================
>  >  ===================
>  >  >
>  >  > 5:46:58 PM Build kind = AUTOBUILD
>  >  >
>  >  > 5:46:58 PM Project=clusteringmdb, kind of build
>  requested=Incremental
>  >  > AspectJ compilation
>  >  >
>  >  > 5:46:59 PM Preparing for build: planning to be an incremental
build
>  >  >
>  >  > 5:46:59 PM AspectJ reports build successful, build was:
INCREMENTAL
>  >  >
>  >  > 5:46:59 PM AJDE Callback: finish. Was full build: false
>  >  >
>  >  > 5:46:59 PM Timer event: 328ms: Total time spent in AJDE
>  >  >
>  >  > 5:46:59 PM Timer event: 0ms: Create element map (0 rels in
project:
>  >  > clusteringmdb)
>  >  >
>  >  > 5:46:59 PM Timer event: 0ms: Add markers (0 markers)
>  >  >
>  >  > 5:46:59 PM Timer event: 344ms: Total time spent in
>  AJBuilder.build()
>  >  >
>  >  > 5:46:59 PM
>  >  >
>  >
>
========================================================================
>  >  ===================
>  >  >
>  >  > 5:46:59 PM Build kind = AUTOBUILD
>  >  >
>  >  > 5:46:59 PM Project=AppGUI, kind of build requested=Incremental
>  AspectJ
>  >  > compilation
>  >  >
>  >  > 5:46:59 PM Preparing for build: planning to be an incremental
build
>  >  >
>  >  > 5:46:59 PM AspectJ reports build successful, build was:
INCREMENTAL
>  >  >
>  >  > 5:46:59 PM AJDE Callback: finish. Was full build: false
>  >  >
>  >  > 5:46:59 PM Timer event: 718ms: Total time spent in AJDE
>  >  >
>  >  > 5:46:59 PM Timer event: 0ms: Create element map (0 rels in
project:
>  >  AppGUI)
>  >  >
>  >  > 5:46:59 PM Timer event: 0ms: Add markers (0 markers)
>  >  >
>  >  > 5:46:59 PM Timer event: 734ms: Total time spent in
>  AJBuilder.build()
>  >  >
>  >  >
>  >  > _______________________________________________
>  >  >  ajdt-dev mailing list
>  >  >  ajdt-dev@xxxxxxxxxxx
>  >  >  https://dev.eclipse.org/mailman/listinfo/ajdt-dev
>  >  >
>  >  >
>  >  _______________________________________________
>  >  ajdt-dev mailing list
>  >  ajdt-dev@xxxxxxxxxxx
>  >  https://dev.eclipse.org/mailman/listinfo/ajdt-dev
>  >  _______________________________________________
>  >  ajdt-dev mailing list
>  >  ajdt-dev@xxxxxxxxxxx
>  >  https://dev.eclipse.org/mailman/listinfo/ajdt-dev
>  >
>  _______________________________________________
>  ajdt-dev mailing list
>  ajdt-dev@xxxxxxxxxxx
>  https://dev.eclipse.org/mailman/listinfo/ajdt-dev
>  _______________________________________________
>  ajdt-dev mailing list
>  ajdt-dev@xxxxxxxxxxx
>  https://dev.eclipse.org/mailman/listinfo/ajdt-dev
>
_______________________________________________
ajdt-dev mailing list
ajdt-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/ajdt-dev


Back to the top