[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
RE: [aspectj-users] AspectJ 1.5 runtime and compile time Performance
|
Thanks, That's a good advice. Although I need to figure
out how to deal with parameters that are objects that might
change.
Thanks again,
Savita
Savita, Now that I understand you are writing a flight recorder I
agree that annotations are the best approach. However you will _not_ have to use
reflection at runtime to capture parameters. Simply put the JoinPoint object
(thisJoinPoint) in your circular buffer for before advice and the object
obtained from "after () : returning(ret)" or "after() : throwing(th)" for after
advice. When you encounter an error condition or some other trigger and need to
dump the buffer use the appropriate methods: getSignature(), getThis(),
getArgs(). Just beware that non-primitive parameters may change value after
being recorded so you may need to us toString (expensive and unreliable), copy
(very expensive) are record simple identity. Using AspectJ and matching on
annotations will be much simpler that using APT. Cheers Matthew Webster
AOSD Project
Java Technology Centre, MP146
IBM
Hursley Park, Winchester, SO21 2JN, England
Telephone: +44 196 2816139
(external) 246139 (internal)
Email: Matthew Webster/UK/IBM @ IBMGB,
matthew_webster@xxxxxxxxxx
http://w3.hursley.ibm.com/~websterm/
"Chandan, Savita"
<Savita.Chandan@xxxxxxxxxxxxxx> Sent by: aspectj-users-bounces@xxxxxxxxxxx
07/08/2006 19:52
Please respond
to aspectj-users@xxxxxxxxxxx |
|
To
| <aspectj-users@xxxxxxxxxxx>
|
cc
|
|
Subject
| RE: [aspectj-users] AspectJ 1.5
runtime and compile time Performance |
|
Hi Mathew, Thanks Mathew, I did read your article and was
hoping that there would be a sequel to the same with AspectJ1.5.
The design
is to log entry/exit of selected few methods that would help record the
application footsteps. This would log to a circular buffer in the memory.
This is a flight recorder logging and is required to be on all the
time. You are right sprinkling annotations all over the code might turn out to
be a maintenance nightmare, but the scope of our annotations will be limited to
certain classes and the idea here is that the developer ( end user) doesn't have
to depend on whether we use AspectJ for our frame work or just generate code
using apt and AnnotationProcessor.
Iam new to AspectJ and will dig further
into using pointcuts as opposed to annotations. But In my design I need to
decide whether I will be using plain Annotations with apt and annotation
processor or Aspect J and here the performance of the AspectJ during runtime
seemed to be of concern coz we will have to use reflection to log the
parameters. Savita
From: aspectj-users-bounces@xxxxxxxxxxx
[mailto:aspectj-users-bounces@xxxxxxxxxxx] On Behalf Of Matthew
Webster
Sent: Monday, August 07, 2006 1:33 AM
To:
aspectj-users@xxxxxxxxxxx
Subject: Re: [aspectj-users] AspectJ 1.5
runtime and compile time Performance
In the past we have done a lot of performance
measurement
(http://ducati.doc.ntu.ac.uk/uksim/journal/Vol-6/No.3-4/CRC-Dalton.pdf),
especially for a logging aspect because of the scope of interaction with the
application, which have resulted in implementation improvements and new compiler
features e.g. -XlazyTjp. Unfortunately this work has not been updated for
AspectJ 1.5 but there shouldn't have been any substantial change in performance
in this particular area. However, there have been improvements to the AspectJ
runtime WRT heap usage which may have a knock-on effect indirectly through
reduced GC.
In
my experience logging (by which I mean recording or tracing entry and exit,
optionally with arguments, for a large proportion of methods in a large
proportion of classes in an application) is disabled for 99% of the time. This
is because the pathlength of recording the information to disk or even
memory in text or binary form has an unacceptable impact on overall application
throughput and is reserved for problem diagnosis. It is therefore the
performance of the system with logging disabled that is important. A well
designed logging aspect should not need to use reflection: using thisJoinPoint
and thisJoinPointStaticPart do not. Please see Chapter 11 of "Eclipse AspectJ"
for an example of best practice.
I'd like to ask some questions about your design. How
do you propose to use annotations? Annotating a large proportion of the methods
in your system will create a new maintenance problem: much better to use a
traditional pointcut that matches using types and method names while
perhaps excluding certain frequently called methods, that will flood the log
with superfluous information, using an annotation that is used at weave- not
run-time.
A well
written logging aspect should have similar performance characteristics to a hand
written equivalent but be less invasive, more flexible and guaranteed to produce
correct data.
Matthew Webster
AOSD Project
Java Technology Centre,
MP146
IBM Hursley Park, Winchester, SO21 2JN, England
Telephone: +44
196 2816139 (external) 246139 (internal)
Email: Matthew Webster/UK/IBM @
IBMGB,
matthew_webster@xxxxxxxxxx
http://w3.hursley.ibm.com/~websterm/
"Chandan, Savita"
<Savita.Chandan@xxxxxxxxxxxxxx> Sent by:
aspectj-users-bounces@xxxxxxxxxxx
04/08/2006 20:49
Please respond
to aspectj-users@xxxxxxxxxxx |
|
To
| <aspectj-users@xxxxxxxxxxx>
|
cc
|
|
Subject
| [aspectj-users] AspectJ 1.5 runtime
and compile time Performance |
|
Hi All,
Iam looking into a design where one of the options is
to use AspectJ with Annotations for adding a logging concern. The concern I have
is regarding the runtime performance hit this would have due to the usage of
reflection in the aspects. The requirement of my design is to log the parameters
as well as the annotated method and the class it belongs to. There would be
restrictions on how many parameters would be logged and stuff.
Does anybody have any links to the benchmarking data
on Java1.5, Windows OS, using AspetcJ1.5?
Thanks,
sc
_______________________________________________
aspectj-users mailing
list
aspectj-users@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/aspectj-users_______________________________________________
aspectj-users
mailing
list
aspectj-users@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/aspectj-users