How can a Java program be optimized? I have no experience in this thematic so I could use some key words so I acn go deeper into it!
Thanks

Recommended Answers

All 10 Replies

There is no specific answer to this question, so I'll give you a general one..
First find out what need to be optimized? For this you can use tools like Rational/IBM Quantify (license issues) or Mocking Framework (in this you'll need to write some code of your own).
Once you know what has to be optimized, you can ask a specific question, then we can write more specific answers. :)

a mocking framework won't tell you what needs optimising.
A profiler may, but not a mock object (if anything it will likely hide the reason for any performance problems).

Most often when people "optimise" code they are just guessing where the problems are, grasping at straws and doing things they once heard someone say would make things faster (and usually they don't of course).

Most often when people "optimise" code they are just guessing where the problems are, grasping at straws and doing things they once heard someone say would make things faster (and usually they don't of course).

Not always true -- well maybe true for beginners who think their code needs optimization for no good reason other than the thing that 'optimization' is a cool word. Take for example String and StringBuffer class in scenarios where appending is frequent. Same thing for Vector and ArrayList.

One should know where to look when it comes for optimization.

I've seen highly experienced people go wrong on "optimisation" when they didn't know the underlying machine instructions being generated (and few people know those).
That was C of course, but in Java deep knowledge is often also needed to get beyond the blatantly obvious stuff.

Things like loop and callstack optimisation aren't all that well known to many people.
SQL optimisation is an especially black art...

a mocking framework won't tell you what needs optimising.
A profiler may, but not a mock object (if anything it will likely hide the reason for any performance problems).

It's just a use of mocking framework that we've found.. you can put out a trace at entry and exit every function. The trace is supposed to have particular information (time for one).. run your program with it and put down the traces in excel or run an awk/shell/perl script and you'll have your performance report.. (that's the reason I mentioned you'll have to write some code of your own)..
The reason why I suggested this in the first place is I donno how accessible Rational Quantify (or other licensed tools) are to this guy.. if they aren't one can always work around it..
Finally, no tool tells you what to optimize (not even Quantify).. they just give you a report and then just go figure.. :)

nice, but how are you going to trace the time needed for the functionality you replaced by those mocks (which usually is the expensive stuff like database and network operations)?

nice, but how are you going to trace the time needed for the functionality you replaced by those mocks (which usually is the expensive stuff like database and network operations)?

You don't mock any objects ! Just define pointcuts for entry/exit of all classes/functions you wanna measure and add before()/after() to trace.
Will post teh code if possible.

You don't mock any objects ! Just define pointcuts for entry/exit of all classes/functions you wanna measure and add before()/after() to trace.
Will post teh code if possible.

I just put Narue's sorting algorithms thru a performance test.
Here is what the output looks like when I put it in an excel sheet.
Have posted the code used in code snippets. My first Java 5.0 code. :)

Hi Kashyap,

Did you tested the functionality of AspectJ with Web Services ...? I used WSIF demo also but i'm facing various issues .If you have any documents or links pointing to this then please post it here.

Thanks

>> Did you tested the functionality of AspectJ with Web Services ...?
Nope, this was my first aspect program. :)
Why don't you post your problem as a thread may be I/someone can help..

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.