• Post Reply Bookmark Topic Watch Topic
  • New Topic

Java Profilers

 
Revati Pathak
Greenhorn
Posts: 26
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hi friends,
I am working on a project which is basically JSP + EJB + servlets.
I want to use a Java Profiler for performance tuning. I have found two tools which are priced one . JProbe and Optimizeit.
Most of the features of both of them are similer.
has anyone used any of these products?
Which is the better one?
Please guide me
-Pragati
 
Mark Herschberg
Sheriff
Posts: 6037
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I've used OptimizeIt. I'm familiar with JProbe but haven't used it. I like OptimizeIt (I forget what version we have, I think it was 3.5 and then we upgraded to 4.0 this fall). I was able to figure out how to use it pretty quickly. The manual is simple and a quick read. Most operations are straightforward.
here are only two things I didn't like, but I suspect you will have similar problems with JProbe, or any other tool.
1) No context
The first tim I used it, I saw lots of numbers. It wasn't immediately clear if these numbers were good, bad, or average. I've been doing Java since it was in beta, but I never saw performence metrics like these before, so didn't know how to judge them.
2) TMI (Too Much Information)
A few of the options gave some type of dependy chains or something like that. Considering the hundreds of classes we wrote, and thousands of objects existing, the excess of information made it hard to get the particular knowledge I was looking for. In fairness, it's tough but in terms of algorithms and in terms of UI to get this information and display it in a useful manner, which I why I suspect JProbe won't be any different.

--Mark
hershey@vaultus.com
 
Jim Baiter
Ranch Hand
Posts: 532
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I've used JProbe quite a bit. It has more graphics and is probably easier to understand but as a downside of this its performance can be lousy. For instance, it has the capability to run Weblogic but when we tried this JProbe just crawled.
 
Gurpreet Aulakh
Greenhorn
Posts: 12
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
You can also try to use an IBM product called JInsight. It is pretty good profiler as well. you can find it at www.alphaworks.ibm.com .
 
Kirk Pepperdine
Author
Ranch Hand
Posts: 71
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I've used both OptimizeIt and JProbe. IME, the biggest difference is in how both tools present the information that they've collected and how you can control that presentation. For me JProbe has a much more intuative presentation than does OptimizeIt. Having said that, I feel that this is more a personal choice as both are quality products.
What I look for is what I'ved learned to call "loci of object creation" and loci of execution". I'll explain this....
First, consider every entry in an execution stack to be a node. Next consider the execution path to be verticies connecting these nodes. If you count the number times you request a method to be executed, you are in essence counting the number of times your visiting a node. The counts of number of times you execute a method from another is a weight on a vertacy. Putting it all together, you've constructed a directed graph (possibly with cycles). If you sample your execution path using a fixed interval, you'll end up wiht an execution graph. The nodes with the highest visitation counts represent "loci of execution". By looking at the verticy counts entering this loci, you can determine casual paths and thus take actions to fragment the loci.
If you smaple the execution path when a new object is created, you end up building a "loci of object creation" graph. Again, the node with the highest visitation counts represent a loci and examining the counts on the verticies can help you determine casual paths. You can use this information to break up these loci.
This is the way that I think about the problem. I like JProbe because it support my view of the world.
JProbe does use a specialized classloader to (byte code injection) inject code into java.lang.Object. If your application cannot tolerate this intrusion, then you'll not be able to use JProbe.
Kirk
 
  • Post Reply Bookmark Topic Watch Topic
  • New Topic
Boost this thread!