.Net Profiler? What about integrating profiling into IDEA?


It's great that you guys are releasing a profiler for .Net, but I have to think there's a market opportunity for a Java profiler tightly integrated with IDEA. I'm a satisfied JProfiler user and find it's interface very nice, but it seems like there could be huge wins in directly integrating profiling into an IDE. Here's some ideas I've been kicking around that stand-alone profilers are just too cumbersome for.

1) Rather than getting performance information for the entire application run (which is rarely what you want), allow individual methods to be marked for profiling, much like the debugger allows method breakpoints now. Current profilers either don't allow this, or allow only very crude versions of it, and as a result produce far more data that is actually desirable.

2) Prebuild sets of methods to get profiling information for. For instance, show performance information and traces for just JDBC calls, or just JSP tag invocations, or just EJB lifecycle calls. Borland OptimizeIt Request Analyzer component goes down this path.

3)Allow the user turn on profiling for methods based on annotations on those methods. The user annotate individual method calls as potentially expensive, and describe the resources used (CPU, heap, database, network, etc.), and toggle acquisition and display of profiling information to just those methods.

It's great that you guys are getting into to profiler business, and I hope you don't miss the chance to build something spectacular in IDEA.

--Dave Griffith

15 comments
Comment actions Permalink

Dave Griffith wrote:

It's great that you guys are releasing a profiler for .Net, but I have to think there's a market opportunity for a Java profiler tightly integrated with IDEA. I'm a satisfied JProfiler user and find it's interface very nice, but it seems like there could be huge wins in directly integrating profiling into an IDE. Here's some ideas I've been kicking around that stand-alone profilers are just too cumbersome for.

1) Rather than getting performance information for the entire application run (which is rarely what you want), allow individual methods to be marked for profiling, much like the debugger allows method breakpoints now. Current profilers either don't allow this, or allow only very crude versions of it, and as a result produce far more data that is actually desirable.

2) Prebuild sets of methods to get profiling information for. For instance, show performance information and traces for just JDBC calls, or just JSP tag invocations, or just EJB lifecycle calls. Borland OptimizeIt Request Analyzer component goes down this path.

3)Allow the user turn on profiling for methods based on annotations on those methods. The user annotate individual method calls as potentially expensive, and describe the resources used (CPU, heap, database, network, etc.), and toggle acquisition and display of profiling information to just those methods.

It's great that you guys are getting into to profiler business, and I hope you don't miss the chance to build something spectacular in IDEA.

--Dave Griffith

I don't think create a new wheel is an intelligent idea...

0
Comment actions Permalink

If you know of a commercial product that does the things I listed, I'd love to hear about it (and purchase it, for that matter). None of the currently available Java profilers come close on issues 1) and 3), but they seem like things that would be easy in a tightly integrated IDEA profiler.

--Dave Griffith

0
Comment actions Permalink

I don't think there'll be an IntelliJ profiler, they probably don't want
to step on the toes of
http://www.yourkit.com/company/index.jsp

R

0
Comment actions Permalink

I agree such tight integration with the IDE would be very nice. Your
suggestions remind me of JFluid (now called NetBeans Profiler). I tried
that before it became integrated with NetBeans because of those
features. Unfortunately it was too unstable at that time and couldn't
handle my applications. I have been meaning to try it again but I
haven't had the time (and need) yet. Has anybody used it?

Also the YourKit company was started by 2 ex-Jetbrains employees
(Vladimir Kondratyev and Anton Katilin). I think they wouldn't be very
pleased if Jetbrains started to compete with them:-) Their profiler has
some nice features too.

Bas

Dave Griffith wrote:

It's great that you guys are releasing a profiler for .Net, but I
have to think there's a market opportunity for a Java profiler
tightly integrated with IDEA. I'm a satisfied JProfiler user and
find it's interface very nice, but it seems like there could be huge
wins in directly integrating profiling into an IDE. Here's some
ideas I've been kicking around that stand-alone profilers are just
too cumbersome for.

1) Rather than getting performance information for the entire
application run (which is rarely what you want), allow individual
methods to be marked for profiling, much like the debugger allows
method breakpoints now. Current profilers either don't allow this,
or allow only very crude versions of it, and as a result produce far
more data that is actually desirable.

2) Prebuild sets of methods to get profiling information for. For
instance, show performance information and traces for just JDBC
calls, or just JSP tag invocations, or just EJB lifecycle calls.
Borland OptimizeIt Request Analyzer component goes down this path.

3)Allow the user turn on profiling for methods based on annotations
on those methods. The user annotate individual method calls as
potentially expensive, and describe the resources used (CPU, heap,
database, network, etc.), and toggle acquisition and display of
profiling information to just those methods.

It's great that you guys are getting into to profiler business, and I
hope you don't miss the chance to build something spectacular in
IDEA.

--Dave Griffith

0
Comment actions Permalink

+Also the YourKit company was started by 2 ex-Jetbrains employees
(Vladimir Kondratyev and Anton Katilin). I think they wouldn't be very
pleased if Jetbrains started to compete with them:-) Their profiler has
some nice features too.+

do I smell a buyout issues here ;)

0
Comment actions Permalink

M. J. Milicevic wrote:

>YourKit .. Their profiler has some nice features too.

>

Too bad it doesn't support MacOS X.

Alain

0
Comment actions Permalink

Alain Ravet wrote:

M. J. Milicevic wrote:

>>YourKit .. Their profiler has some nice features too.
>>


Too bad it doesn't support MacOS X.


YourKit 4.0 will support MacOS X. I don't know if on the current YourKit
EAP MacOS X support is working already, but if not it should be soon.

Bas

0
Comment actions Permalink

Bas Leijdekkers wrote:

YourKit 4.0 will support MacOS X. I don't know if on the current
YourKit EAP MacOS X support is working already, but if not it should
be soon.

>

Thanks for the info. I didn't know about their EAP.
http://www.yourkit.com/eap/index.jsp

I'll look into it.

Alain

0
Comment actions Permalink

In article <ctb5ul$kim$1@is.intellij.net>,
Alain Ravet <alain.ravet@biz.tiscali.be> wrote:

Bas Leijdekkers wrote:

YourKit 4.0 will support MacOS X. I don't know if on the current
YourKit EAP MacOS X support is working already, but if not it should
be soon.

>

Thanks for the info. I didn't know about their EAP.
http://www.yourkit.com/eap/index.jsp

I'll look into it.

Alain


Yup same here, not sure what changed in 4.0, but I was told that the Mac
OS X JVM did not have good support for their profiling engine and they
could not do it until Apple got their butts in gear. Wonder what got
YouKit's butt in gear to figure out that others do it, and they should
as well.

Thanks for the link, will go look at it.

R

0
Comment actions Permalink

Bas

YourKit 4.0 will support MacOS X. I don't know if on the current
YourKit EAP MacOS X support is working already, but if not it should
be soon.




I've just installed it, and it seems to work: the 2 icons show up in the
toolbar, when I click, it runs my tests, but..
How do I use it? How can I visualize the profiling results?

When I launch my tests, they run for 2 seconds, and all I see in the
console is 4 lines :

/System/Library/Frameworks/JavaVM.framework/Versions/1.4.2/Home/bin/java
-Xrunyjpagent:sessionname=YJPQUOTED416c6c20746573747320286c61756e636865642066726f6d204944454129
-Dfile.encoding=MacRoman -classpath.. -ideVersion5 @/tmp/idea_junit5725.tmp
Using JVMPI
Listening on port 56130...
21 test classes found in package "com.ravet"


Alain

0
Comment actions Permalink

In article <ctbdq9$vnv$1@is.intellij.net>,
Alain Ravet <alain.ravet@biz.tiscali.be> wrote:

Bas

YourKit 4.0 will support MacOS X. I don't know if on the current
YourKit EAP MacOS X support is working already, but if not it should
be soon.



I've just installed it, and it seems to work: the 2 icons show up in the
toolbar, when I click, it runs my tests, but..
How do I use it? How can I visualize the profiling results?

When I launch my tests, they run for 2 seconds, and all I see in the
console is 4 lines :

/System/Library/Frameworks/JavaVM.framework/Versions/1.4.2/Home/bin/java
-Xrunyjpagent:sessionname=YJPQUOTED416c6c20746573747320286c61756e6368656420667
26f6d204944454129
-Dfile.encoding=MacRoman -classpath.. -ideVersion5 @/tmp/idea_junit5725.tmp
Using JVMPI
Listening on port 56130...
21 test classes found in package "com.ravet"


Alain


Something tells me 2 seconds is too short to get a full profile, you
might want to repeat the tests in a loop? Dunno I could be way off here.

R

0
Comment actions Permalink

Alain Ravet wrote:

When I launch my tests, they run for 2 seconds, and all I see in the
console is 4 lines :

/System/Library/Frameworks/JavaVM.framework/Versions/1.4.2/Home/bin/java
-Xrunyjpagent:sessionname=YJPQUOTED416c6c20746573747320286c61756e636865642066726f6d204944454129
-Dfile.encoding=MacRoman -classpath.. -ideVersion5 @/tmp/idea_junit5725.tmp
Using JVMPI
Listening on port 56130...
21 test classes found in package "com.ravet"


For short-lived applications you need to tell YourKit to start with profiling
just after the JVM starts up and to take a snapshot before it exits. You find
those options in your run-configurations under the "Startup/Connection" tab.

Sascha

0
Comment actions Permalink

Sascha Weinreuter wrote:

For short-lived applications you need to tell YourKit to start with
profiling
just after the JVM starts up and to take a snapshot before it exits. You
find
those options in your run-configurations under the "Startup/Connection"
tab.


I guess I spoke too soon. The "Startup/Connection" tab doesn't appear in
Irida builds. I wonder whose fault that is...

You can add some sleep()s before and after your code and trigger the profiling
and snapshot creating manually from within YourKit. There's also a way how to
manually add the required options to the JVM params. It's somewhere in the manual.

Sascha

0
Comment actions Permalink

Sascha Weinreuter wrote:

There's also a way how to manually add the required options to the
JVM params.
It's somewhere in the manual.

>
Found it:

-Xrunyjpagent:onexit=both,tracing,alloc

It's a little buggy in Irida though, and I couldn't do much.

Alain

0
Comment actions Permalink

I use YourKit currently and think it's great, however as of 4.0 there is no longer a personal license option (which is how I purchase all my development products) so that will make things interesting to see if I continue to use it. For the time-being I'm just continuing with the 4.0 EAP until it ends and then I'll probably have to switch back to 3.2.

The only thing I don't like about YourKit is that the UI does not form part of the IDE. I love what NetBeans have done with JFluid and the guys have done with Clover and would love to see YourKit (or another profiler) implemented in IDEA the same way.

0

Please sign in to leave a comment.