Re: [aspectwerkz-user] Speeding up roundtrip
Mattias Jiderhamn <[email protected]> Tue, 21 Jun 2005 14:50:54 +0200
| Newsgroups | gmane.comp.java.aspectwerkz.user |
|---|---|
| Message-ID | <[email protected]> |
At 2005-06-21 14:12, you wrote:
>The pointcut:
> ( execution(* se.exder.system.EntityObject+.update*(..))
> OR execution(* se.exder.system.EntityObject+.delete*(..))
> OR execution(* se.exder.system.EntityObject+.insert*(..)) )
> AND !within(se.exder.logic.edi.GeneratedEdiLogObject+)
>is actually expensive since it means that we need to get the complete
>class hierarchy for every single class to see if the currently weaved
>class extends se.exder.system.EntityObject
Ah, of course.
>You may try to use a "within(<the package of the target app>) && ..."
>prefix perhaps (even as simple as "within(se..*)" actually to f.e.
>quicly bypass third parties dependencies at least under a load time
>weaving scheme.
Tried to change this to
within(se.exder..*.*Object) AND
( execution(* se.exder.system.EntityObject+.update*(..))
OR execution(* se.exder.system.EntityObject+.delete*(..))
OR execution(* se.exder.system.EntityObject+.insert*(..)) )
AND !within(se.exder.logic.edi.GeneratedEdiLogObject+)
but it didn't seems to help a bit. Took about 55
seconds, compared to 10 secs without any weaving.
As for separate output directory, should I create
a JIRA entry for this feature request?
>To do more diagnostic I would need the app itself I guess.
Hmmm. What would you need? WAR + sources?
/Mattias J
>On 6/21/05, Mattias Jiderhamn <[email protected]> wrote:
> > At 2005-06-21 13:03, you wrote:
> > >You perhaps need to see how the matching is done using
> > >-Daspectwerkz.transform.details=true
> > >That may help to narrow call side (call/get/set) pointcuts f.e. One
> > >such pointcut can indeed sometime lead to parsing everry single
> > >bytecode instruction.
> >
> > We only have execution() pointcuts.
> >
> > >Aside you may use include/exclude element in your aop.xm if you know
> > >that some files will not be weaved at all.
> >
> > We have made sure only to weave the ordinary
> > classes, not the JSP classes, but there are
> pointcuts in lots of the classes.
> >
> > I don't think there is much room for optimizing
> > the pointcuts. But I will post the aop.xml below
> > to see if anybody has suggestions.
> >
> > >AspectWerkzC does not support writing to a different location.
> >
> > Could this be added?
> >
> > >On the other hand you may be able to implement a wrapper that checks
> > >for .class file timestamps to compile only modified files (then keep
> > >track of the lastRun timestamp in some per project file)
> >
> > Only this wrapper, without writing to a different
> > location wouldn't helpt that much, since I would
> > then have to copy all the files before
> weaving, or the compilation won't work.
> > If the original .class was not overwritten, I
> > wouldn't need a timestamp file, but only compare
> > the timestamp of weaved .class with the original.
> >
> >
> > --------- aop.xml ---------------
> >
> > <aspectwerkz>
> > <system id="exder">
> > <aspect class="se.exder.system.persistence.JTAAspect">
> > <advice name="txByType" type="around"
> > bind-to="execution(@se.exder.system.persistence.Tx * se.exder..*.*(..))" />
> > <pointcut name="objectModification">
> > ( execution(* se.exder.system.EntityObject+.update*(..))
> > OR execution(* se.exder.system.EntityObject+.delete*(..))
> > OR execution(* se.exder.system.EntityObject+.insert*(..)) )
> > AND !within(se.exder.logic.edi.GeneratedEdiLogObject+)
> > </pointcut>
> > <advice name="txMandatory" type="around"
> > bind-to="objectModification" />
> > </aspect>
> > </system>
> > </aspectwerkz>
> >
> >
> >
> >
> > >On 6/21/05, Mattias Jiderhamn <[email protected]> wrote:
> > > > Our application is big enough to require a few
> > > > minutes of offline weaving on my machine, so we
> > > > use online weaving in development. On the other
> > > > hand, reloading the application in the web
> > > > container using online weaving isn't much better
> > > > (say ½-1 minute). This makes developing very
> > > > slow, since the code-compile-test cycle has a lot of weaving overhead.
> > > >
> > > > Is there any better way to do this? Can I have
> > > > AspectWerkz weave only modified classes offline?
> > > > If I weave the whole project and then try to
> > > > compile in my IDE (IntelliJ), I get compiler
> > > > errors. Could I make AspectWerkzC output the
> > > > weaved files in a different directory, so that I
> > > > can compile from the IDE and then have
> > > > AspectWerkz weave the modified classes only?
> > > >
> > > > Thanks in advance,
> > > > Mattias Jiderhamn
> > > >
> > > >
> >
> >