Re: [aspectwerkz-user] Speeding up roundtrip

Alexandre Vasseur <[email protected]> Tue, 21 Jun 2005 14:12:51 +0200
Newsgroups gmane.comp.java.aspectwerkz.user
Message-ID <[email protected]>
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

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.

To do more diagnostic I would need the app itself I guess.

Alex



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
> > >
> > >
> 
>